日期:2014-05-20  浏览次数:20715 次

关于ArrayList
ArrayList<Integer> list = new ArrayList<Integer>(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象。


这道题求大神给思路

------解决方案--------------------
引用:
Quote: 引用:

		ArrayList<Integer> list = new ArrayList<Integer>();
Method add = ArrayList.class.getDeclaredMethod("add", Object.class);
add.invoke(list, "csdn");
System.out.println(list.get(0));

居然可以啊,原理是什么呢??Arraylist并没有提供添加object类型的参数啊?
    public boolean add(E e) {}
    public void add(int index, E element) {}

Java的泛型是伪泛型,基本是在编译器实现的,在生成的字节码中是不包含泛型中的类型信息的。。这种机制好像是叫类型擦除,在这你打印一下就知道了
		Method[] method = ArrayList.class.getMethods();
for(Method m : method){
System.out.println(m);
}