* 目的:深入了解泛型
* 结论:
* 泛型是提供给javac编译器使用的,用来规定容器可以添加的参数类型。
* 但是编译器编译时会去除泛型(这也就是为什么可以通过反射跳过泛型添加其他属性的值)
*/
public class GenelicTest {
public static void main(String[] args) throws Exception{
List<String> list = new ArrayList<String>();
List<Integer> list1 = new ArrayList<Integer>();
System.out.println(list.getClass()==list.getClass()); //结果为true,也就是说他们是同属于一份字节码,字节码不存在泛型。
//list.add(1); //编译错误
list.add("aa");
list.add("bb");
list.getClass().getMethod("add", Object.class).invoke(list, 1); //通过反射跳过泛型添加其他类型的值
for(Object val:list){
System.out.println(val);
}
}
} |
|