A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付星 黑马帝   /  2011-12-27 16:13  /  2029 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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));

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

1 个回复

倒序浏览
System.out.println(),这个方法里面只能接受int类型的变量,至于说创建一个Integer类型,然后传进去也能打印,应该是JDK1.5以后的新特性,将Integer类型自动拆箱为了int型;这边利用反射得到原来的对象,即Integer型的12,jvm应该是没有把它自动拆箱,不能打印Integer类型,所以会报错。你把它先转成Object就能打印了System.out.println((Object)ls.get(0));

评分

参与人数 1黑马币 +1 收起 理由
付星 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马