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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题所示,请问一下各位利用反射添加String对象原理是什么,为什么能添加

5 个回复

倒序浏览
因为泛型中参数类型的插除原理,在编译器对源代码进行编译成class文件其中泛型中参数类型会被擦除,所以以后用反射对集合进行操作,是跳过编译器,在class文件中没有了参数类型,所以用反射能够往集合中添加任何引用类型的数据
回复 使用道具 举报
DamonZh 来自手机 中级黑马 2014-11-21 17:38:45
藤椅
一楼答的漂亮 我还没学到反射 但这个擦除让我印象深刻
回复 使用道具 举报
暴力反射??修改类型??之前好像碰到过此问题。我再找找。
回复 使用道具 举报
嗯。。刚刚我也找到题目做出来了。。那个泛型应该只是在编译的时候起作用,就是存入的不是相同的类型的话会提示,编译不通过,但是在运行的时候时候是加进去就没问题,因为LIST是可以储存不同类型的不同元素的,所以加任何对象都能加进去。

但是如果集合改成TreeSet就不能添加不同类型了,即使反射也会报错,这是由于java运行中的问题。附上代码

11111111111111.png (163.45 KB, 下载次数: 73)

11111111111111.png
回复 使用道具 举报
sin 中级黑马 2014-11-21 23:28:03
地板
关注 反射技术String getClassLoader
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马