泛型的基本应用、内部原理及更深应用
泛型的基本应用、内部原理及更深应用
3. 泛型号是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去除掉类型信息,使程序运行效率不受影响,对于参数化的类型,getClass()方法的返回值和原始类型完全一样。由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其它类型的数据,例如,用拟向得到集合,再调用其add方法即可。
4. ArrarList<E> 类定义和ArrayList>Integer>类引用中涉及如下术语言:
5. 参数化类型与原始类型的兼容性:
7.在创建数组实例时,数组的元素不能使用参数化的类型,例如,下面的语句有错误:
Vector<Integer> vectorList[] = new Vector<Integer>[10];
8.下面的代码会报错吗? 一看会,实际却不会,编译器是一行一行检查的
Vector v1 = new Vector<String>(); Vector<Object> v = v1;
泛型的通配符扩展应用
B. 限定通配符的下边界 // 下边界为Integer
正确:Vector<? super Integer> x = new Vector<Number>();
错误:Vector<? super Integer> x = new Vector<Byte>();
综合实例代码: