《JAVA编程思想》自动包装机制在泛型中的应用
来源:互联网 发布:cf外设软件 编辑:程序博客网 时间:2024/05/20 15:42
刚刚开学,今天课少,趁着闲再更新一篇关于Java中泛型博文,废话不多说直接上干货。
任何基本类型都不能作为类型参数。这应该是一个基本的概念,先看看下面的代码:
import java.util.*;public class ListofInt{ public static void main(String[] args) { List<Integer> li = new ArrayList<Integer>(); for(int i=0; i<5; i++) { //这里在向一个参数类型为Integer的List加入一个类型为int的值 li.add(i); } for(int i : li) //自动包装机制允许foreach产生int { System.out.print(i + " "); //输出:0 1 2 3 4 } }}
我们并不能创建一个ArrayList<int>,我们只能创建其对应的类ArrayList<Integer>,然后基于Java SE5的自动包装机制可以自动的实现int到Integer的双向转换。
如果想避免这种因为自动装箱机制导致的性能损失,最好使用专门适用基本类型的容器版本
下面的代码创建了持有Byte的Set
import java.util.*;public class ByteSet{ Byte[] possibles = {1,2,3,4,5,6,7,8,9}; Set<Byte> mySet = new HashSet<Byte>(Arrays.asList(possibles)); //Set<Byte> mySet2 = new HashSet<Byte>(Arrays.<Byte>asList(1,2,3,4,5,6,7,8,9)); //这样是不行的,asList方法的参数一定要是一个数组}
但是你不能寄希望于自动包装机制解决所有的问题,下面的代码将展示这个问题:
import net.mindview.util.*;class FArray{ public static <T> T[] fill(T[] a,Generator<T> gen) { for(int i=0; i<a.length; i++) { a[i] = gen.next(); } return a; }}public class PrimitiveGenericTest{ public static void main(String[] args) { String[] strings = FArray.fill(new String[7], new RandomGenerator.String(10)); for(String s : strings) { System.out.println(s); } Integer[] integers = FArray.fill(new Integer[7],new RandomGenerator.Integer()); for(int i : integers) { System.out.println(i); } //int[] b = FArray.fill(new int[7], new RandomGenerator.Integer()); //很不幸这个程序并不能正常运行,因为java虽然可以将Integer转化为int,但是自动包装机制不能用于数组 }}
阅读全文
0 0
- 《JAVA编程思想》自动包装机制在泛型中的应用
- Java中的自动包装
- java中的自动包装
- java的自动包装机制
- 极限编程的思想方法在差错控制中的应用
- java的自动包装机制在数组中不能使用的问题
- java的自动包装机制在数组中不能使用的问题
- vs2013在图像处理中的应用(8):用SWIG自动包装C/C++接口
- Java中的自动包装和解包
- 反射机制在java中的应用
- 《Java编程思想》泛型中的策略设计模式
- 《JAVA编程思想》中的代理
- 浅谈JAVA反射机制在Android应用开发中的应用
- 浅谈JAVA反射机制在Android应用开发中的应用
- 浅谈JAVA反射机制在Android应用开发中的应用
- 浅谈JAVA反射机制在Android应用开发中的应用
- 浅谈JAVA反射机制在Android应用开发中的应用
- 浅谈JAVA反射机制在Android应用开发中的应用
- hadoop学习5
- 机器学习算法-DBSCAN聚类
- java基础语法难点(day01-day05)
- 文件操作指令笔记
- [RRM]RRM Common 理解
- 《JAVA编程思想》自动包装机制在泛型中的应用
- 这样的SQL不想改第二遍更不想再写第二遍
- 【前端知识点】前端事件监听、处理等解决方案详解
- 腾讯前端笔试题
- ubuntu14.04配置Fiddler抓包
- vijos1264 神秘的咒语(DP)
- 比较两个字符串得到两个字符串的最大子串
- Android内存优化方法
- 机器学习中的范数规则化之(一)L0、L1与L2范数