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")); } }
时间: 2024-11-15 09:34:50