黑马程序员技术交流社区
标题:
救命啊!!!!!通过反射向泛型集合加入数据问题
[打印本页]
作者:
魏兴发
时间:
2011-11-6 14:21
标题:
救命啊!!!!!通过反射向泛型集合加入数据问题
本帖最后由 know 于 2011-11-6 14:22 编辑
public static void main(String[] args) throws Exception {
ArrayList<String> lists = new ArrayList<String>();
lists.add("wei");
lists.add("xiaoming");
lists.getClass().getMethod("add",Object.class).invoke(lists,3);
System.out.println(lists.get(2));
ArrayList<Integer> collection = new ArrayList<Integer>();
collection.add(1);
collection.getClass().getMethod("add", Object.class).invoke(collection,"abc");
System.out.println(collection.get(1));
}
复制代码
为什么我不能将Integer类型的数据加到String类型的集合中去呢?
将String类型的数据却可以顺利加入到Integer类型的集合中呢?
问题出在哪里呢?????
作者:
成杰
时间:
2011-11-6 19:20
把这句System.out.println(list1.get(0)); 换成
Object obj=list1.get(0);
System.out.println(obj);
就不会出错了。
往String类型集合中存入Integer类型数据后,取出时将它们转换成公有的Object类
原因:执行System.out.println(list.get(0));时内部调用了String.valueof(obj)方法,
而执行System.out.println(list1.get(0));这句时,由于List指定的是String类型,它便直接输出了,因此报错java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2