集合框架-泛型
1、泛型
jdk1.5以后出现的安全机制
2、有什么好处?
(1)将运行时期的问题ClassCastException转到了编译时期。
(2)避免了强制转换的麻烦。
3、<>什么时候用?
当操作的引用数据类型不确定的时候。就使用<>。将要操作的引用数据类型传入即可。其实<>就是一个用于接收具体引用数据类型的参数范围。
在程序中,只要用到了带有<>的类或接口,就要明确传入的具体引用数据类型。
泛型技术是给编译器使用的技术,用于编译时期。确保了类型的安全。
4、擦除和补偿
运行时,会将泛型去掉,生成的class文件中是不带泛型的,这个成为泛型的擦除。
为什么擦除呢?因为为了兼容运行的类加载器。
泛型的补偿:在运行时,通过获取元素的类型进行转换动作。不用使用者再强制转换了。
5、泛型的通配符:
? 未知类型。
<?extends E> :上限
<? super E> :下限
举例:
public static void main(String[] args) { ArrayList<String> a1 = new ArrayList<String>(); a1.add("121"); a1.add("322"); ArrayList<Integer> a2= new ArrayList<Integer>(); a2.add(121); a2.add(322); printCollection(a1); printCollection(a2); } /** * 迭代并打印集合中元素 * @param col */ public static void printCollection(Collection<?> col) { Iterator<?> it = col.iterator(); while(it.hasNext()) { System.out.println(it.next().toString()); } }