Java泛型擦除是什么
发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,这篇文章主要介绍了Java泛型擦除是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java泛型擦除是什么文章都会有所收获,下面我们一起来看看吧。泛型信息只存在于代码编
千家信息网最后更新 2025年11月16日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安全错误
数据库的锁怎样保障安全
东南亚招聘软件开发工程师
在linux中数据库备份
甲骨文香港区服务器
互联网科技金融概念股
怎么样找网络安全工程师
前端什么是本地服务器
某企业数据库营销
今日全球互联网科技
济南市网络安全办公室
网络安全十九届五中全会
视频软件开发工具包
ftp服务器怎么导出链接
服务器的soc卡是什么东西
网络安全的重要性与现状
ourplay服务器连接错误
服务器游戏端口安全
网络安全大赛哪里能报名
从服务器下载代码为防止安全
网络安全法发布的原因和目的
网络安全文字素材20个字
pi系统中的Af服务器
延津网络安全宣传
奉化敏捷软件开发项目
原神 选择服务器
服务器代理上网
怎么知道服务器地址
家电网络安全视频
中少年网络安全黑板报
测试服务器ip
分布式数据库包含哪两个部分