黑马程序员技术交流社区

标题: 反射添加不同类型数据 [打印本页]

作者: 付星    时间: 2011-12-27 16:13
标题: 反射添加不同类型数据
List<Integer> list=new ArrayList<Integer>();
//使用反射添加不同类型数据
list.getClass().getMethod("add", Object.class).invoke(list, "abc");
               
System.out.println(list.get(0));
//为什么Integer可以反射添String 而String里加Integer不能打印
List<String> ls=new ArrayList<String>();
ls.getClass().getMethod("add", Object.class).invoke(ls, 12);
System.out.println(ls.get(0));
作者: yunqiangshan    时间: 2011-12-27 22:26
System.out.println(),这个方法里面只能接受int类型的变量,至于说创建一个Integer类型,然后传进去也能打印,应该是JDK1.5以后的新特性,将Integer类型自动拆箱为了int型;这边利用反射得到原来的对象,即Integer型的12,jvm应该是没有把它自动拆箱,不能打印Integer类型,所以会报错。你把它先转成Object就能打印了System.out.println((Object)ls.get(0));




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2