java 泛型

一、什么是泛型?

   泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,

就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

/*
            定义了一个List类型的集合,先向其中加入了两个int类型,随后加入一个String类型的值。
            这是完全允许的,因为此时list默认的类型为Object类型,所以在编译阶段正常。在之后的循环中,
            由于忘记了之前在list中也加入了String类型的值或其他编码原因,所以运行时会出现“java.lang.ClassCastException”异常。
            因此,导致此类错误编码过程中不易发现。
      */
    public static void main(String[] args) {
        List list=new ArrayList();
        list.add(100);
        list.add(200);
        list.add("ABC");
        for(int i=0;i<list.size();i++){
            Integer math=(Integer) list.get(i);//java.lang.ClassCastException
            System.out.println(math);
        }
    }

 

/* 
     * 通过List<Integer>,直接限定了list集合中只能含有Integer类型的元素,
     * 由于编译器已经能够确认它是Integer类型了。所以在往集合找中添加String
     * 元素时会提示编译错误
     */
    public static void main(String[] args) {
        List<Integer> list=new ArrayList<Integer>();
        list.add(100);
        list.add(200);
        list.add("adsa")//提示编译错误
        for(int i=0;i<list.size();i++){
            Integer math=(Integer) list.get(i);
            System.out.println(math);
        }
    }

 

 

 

 

 

原文地址:https://www.cnblogs.com/jalja/p/5005078.html