黑马程序员技术交流社区

标题: 通过反射绕过集合参数类型的问题 [打印本页]

作者: 聪明的傻瓜    时间: 2014-7-28 17:40
标题: 通过反射绕过集合参数类型的问题
如图 为何集合定义为Integer型可以通过反射传入String类型的值,而反之却报错?

作者: fantacyleo    时间: 2014-7-28 18:11
本帖最后由 fantacyleo 于 2014-7-28 18:12 编辑

当你使用泛型,指定类型参数为String时,ArrayList的get函数就变成了
String get(int)
虽然你通过反射绕过编译期的类型检查,但get方法仍然试图返回一个String,结果就是Integer强转为String,你说能不抛异常吗?
作者: 乐此不疲    时间: 2014-7-28 19:23
fantacyleo 发表于 2014-7-28 18:11
当你使用泛型,指定类型参数为String时,ArrayList的get函数就变成了
String get(int)
虽然你通过反射绕过 ...

那第一个String强转Integer怎么回事呢
作者: xwh1230    时间: 2014-7-28 19:43
123是int基本类型,需换为Integer才可以把
作者: 聪明的傻瓜    时间: 2014-7-28 20:08
xwh1230 发表于 2014-7-28 19:43
123是int基本类型,需换为Integer才可以把

不是的 ,1.5有自动装箱过程的

作者: rekirt    时间: 2014-7-28 20:42
for(Object o:al)System.out.println(o);




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