Java泛型擦除是什么
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了Java泛型擦除是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java泛型擦除是什么文章都会有所收获,下面我们一起来看看吧。泛型信息只存在于代码编
千家信息网最后更新 2026年11月02日Java泛型擦除是什么
这篇文章主要介绍了Java泛型擦除是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java泛型擦除是什么文章都会有所收获,下面我们一起来看看吧。
泛型信息只存在于代码编译阶段,但是在java的运行期(已经生成字节码文件后)与泛型相关的信息会被擦除掉,专业术语叫做类型擦除。
泛型擦除概念
泛型信息只存在于代码编译阶段,但是在java的运行期(已经生成字节码文件后)与泛型相关的信息会被擦除掉,专业术语叫做类型擦除。我们来看一个例子:
ArrayList l1 = new ArrayList();ArrayList l2 = new ArrayList(); System.out.println(l1.getClass()==l2.getClass());
运行代码,结果为True
这是因为ArrayList 和ArrayList 在 jvm 中的 Class 都是 List.class,二者在 jvm 中等同于List
利用类型擦除干"坏事儿"
大家都知道,下面这段代码l.add(123)无法编译通过,因为123不是String类型,这也是使用泛型的好处之一。
ArrayList l=new ArrayList();l.add("abc");l.add(123);但是我们理解了泛型擦除的原理,我们可以巧妙地利用这个原理结合反射知识干一些"坏事",例如:
ArrayListl=new ArrayList(); l.add("abc"); try { Method method = l.getClass().getDeclaredMethod("add",Object.class); method.invoke(l,"test"); method.invoke(l,100.f); }catch (Exception e) { e.printStackTrace(); } System.out.println("list的大小是:"+l.size()); for ( Object o: l){ System.out.println(o); }运行结果是:
list的大小是:3abctest100.0(被成功插入到ArrayList中)
我们可以看见100.0 成功地插入到ArrayList 中了,所以利用类型擦除的原理并结合反射的手段就绕过了正常开发中编译器不允许的操作限制。
关于"Java泛型擦除是什么"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Java泛型擦除是什么"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
类型
代码
信息
知识
编译
原理
成功
专业
内容
坏事
大小
字节
文件
是在
术语
篇文章
结果
行期
阶段
反射
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广东猪兼强互联网科技有限公司
重庆互联网络科技
港股互联网科技股
深圳互联网科技公司
北京互联网科技有限公司
致聘互联网科技
互联网科技缩写
睿民互联网科技
润盈互联网科技
中国最先进互联网科技公司
青岛中康互联网医疗科技有限公司
互联网金融科技展
朱啸虎曾投资哪些互联网科技企业
科技赋能视角下互联网保险发展
城市宝互联网科技有限公司
工业互联网科技成果转化
卡尔迅互联网科技有限公司
互联网时代科技型公司的机会
互联网科技手抄报图片
优雇互联网科技有限公司
互联网科技网
互联网科技会
港股互联网科技股
为想互联网科技
天津摩尔互联网科技
互联网科技宣传片
丰台科技园 互联网公司
栖莱科技互联网股份有限公司
健康食品互联网创新科技园项目
银行科技岗属于互联网吗