黑马程序员技术交流社区
标题:
在一个定义为ArrayList<Integer>集合中添加String的原理是什么
[打印本页]
作者:
黑色的雪
时间:
2014-11-21 14:23
标题:
在一个定义为ArrayList<Integer>集合中添加String的原理是什么
如题所示,请问一下各位利用反射添加String对象原理是什么,为什么能添加
作者:
zhangyangLengen
时间:
2014-11-21 14:36
因为泛型中参数类型的插除原理,在编译器对源代码进行编译成class文件其中泛型中参数类型会被擦除,所以以后用反射对集合进行操作,是跳过编译器,在class文件中没有了参数类型,所以用反射能够往集合中添加任何引用类型的数据
作者:
DamonZh
时间:
2014-11-21 17:38
一楼答的漂亮 我还没学到反射 但这个擦除让我印象深刻
作者:
scoto263
时间:
2014-11-21 20:29
暴力反射??修改类型??之前好像碰到过此问题。我再找找。
作者:
scoto263
时间:
2014-11-21 22:33
嗯。。刚刚我也找到题目做出来了。。那个泛型应该只是在编译的时候起作用,就是存入的不是相同的类型的话会提示,编译不通过,但是在运行的时候时候是加进去就没问题,因为LIST是可以储存不同类型的不同元素的,所以加任何对象都能加进去。
但是如果集合改成TreeSet就不能添加不同类型了,即使反射也会报错,这是由于java运行中的问题。附上代码
11111111111111.png
(163.45 KB, 下载次数: 70)
下载附件
2014-11-21 22:33 上传
作者:
sin
时间:
2014-11-21 23:28
关注 反射技术String getClassLoader
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2