黑马程序员技术交流社区
标题:
泛型和反射的问题
[打印本页]
作者:
轻松过关
时间:
2012-12-6 17:14
标题:
泛型和反射的问题
张老师在将泛型的时候举了一个例子,证明用反射可以绕过泛型的约束,向集合内存放与反省定义不同的数据,
但像外取值的时候他只实验了,想List<Integer>内放入字符串的值,放入后可以成功取出打印,但我试验向List<String>中存放数字的时候,取出的代码报错。Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at GenericTest.main(GenericTest.java:21)
为什么?请指教!
代码如下:
List<String> list1=new ArrayList<String>();
List<Integer> list2=new ArrayList<Integer>();
System.out.println(list1.getClass()==list2.getClass());
list2.getClass().getMethod("add", Object.class).invoke(list2, "abc");
//List<Integer>取出字符串打印没问题,
System.out.println(list2.get(0));
list1.getClass().getMethod("add", Object.class).invoke(list1, 12);
//List<String>取值报类型转换错误。
System.out.println(list1.get(0));
作者:
王中利
时间:
2012-12-6 17:26
集合中是不能存放基本数据类型的,在jdk1.5之后,如果将基本数据类型加入集合会被强制转为其包装类:这个12会被强制转化成Integer类型的,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2