思考,将已存在的ArrayList<Integer>集合中添加一个字符串数据,如何实现呢?
其实程序编译后产生的.class文件中是没有泛型约束的,这种现象我们称为泛型的擦除。那么,我们可以通过反射技术,来完成向有泛型约束的集合中,添加任意类型的元素。
public class ReArrayList { public static void main(String[] args) throws Exception{ List<String>list=new ArrayList(); Class c=list.getClass(); Object obj=c.newInstance(); Method m=c.getMethod("add", Object.class); m.invoke(list, 1); m.invoke(list, 2); m.invoke(list, 3); System.out.println(list);
for(Object o:list){
System.out.println(o);
}
}
}
注:遍历只能写Object类型,没有实用价值。