ArrayList<String> collection1=new ArrayList<String>();
ArrayList<Integer> collection2=new ArrayList<Integer>();
System.out.println(collection1.getClass()==collection2.getClass());//java虚拟机得到的是同一份字节码
//去类型化
collection2.getClass().getMethod("add", Object.class).invoke(collection2, "zhangzhao");
System.out.println(collection2.get(0));
结果:zhangzhao
本文演示了如何利用Java泛型擦除特性及反射机制实现不同类型的ArrayList之间的交叉调用,揭示了Java泛型在运行时实际上被擦除为同一类型的基本原理。
749

被折叠的 条评论
为什么被折叠?



