集合框架-泛型

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());
        }
    }

 

posted @ 2019-05-28 22:19  乌鱼#  阅读(160)  评论(0编辑  收藏  举报