首页 > 代码库 > 36_入门泛型的基本应用

36_入门泛型的基本应用

 

package com.itcast.day2;import java.lang.reflect.Constructor;import java.util.ArrayList;import java.util.List;/** * 泛型入门 *  * @author ljl *  */public class GernericTest {    public static void main(String[] args) throws Exception {        /**         * 不使用泛型时,eclipse中的黄色警告 Multiple markers at this line - ArrayList is a         * raw type. References to generic type ArrayList<E> should be         * parameterized 翻译:ArrayList是一个原始类型,参照泛型类型,ArrayList<E>应该被参数化。         */        ArrayList list = new ArrayList();        list.add(1);        list.add(1L);        list.add("abc");        // 运行期异常--类型转换: java.lang.ClassCastException: java.lang.String cannot be        // cast to java.lang.Integer        int i = (Integer) list.get(2);        /** 使用了泛型 ***/        List<String> list2 = new ArrayList<String>();        list2.add("abc");        // list2.add(1);//编译报错。        // list2.add(1L);//编译报错。        // java.lang.ClassCastException: java.lang.String cannot be cast to        // java.lang.Integer        // int i=(Integer)list2.get(0);//编译报错。        String str = list2.get(0);        System.out.println(str);// abc        /** 反射中泛型的使用 ***/        // 01.Constructor未使用泛型,构造对象完毕之后不知道是String                /**不使用泛型时,eclipse中的黄色警告         * Constructor is a raw type. References to generic type Constructor<T> should be parameterized         * 翻译:Constructor是一个原始类型,应该参照泛型类Contructor<T>来参数化.         */        Constructor constructor = String.class                .getConstructor(StringBuffer.class);        String ss = (String) constructor.newInstance(new StringBuffer("abc"));        // 02.Constructor使用了泛型,规定好构造器的类型是Stirng类型的        Constructor<String> constructor2 = String.class                .getConstructor(StringBuffer.class);        String ss2 = constructor2.newInstance(new StringBuffer("abcd"));    }}

36_入门泛型的基本应用