JAVA 泛型之类型擦除
2024-09-04 04:28:54
★ 泛型是 JDK 1.5 版本引进的概念,之前是没有泛型的概念的,但泛型代码能够很好地和之前版本的代码很好地兼容。
CollectionTest.java ---编译成CollectionTest.class ----JVM中运行
因为泛型信息只存在于代码编译阶段,编译器编译完带有泛形的java程序后,生成的class文件中与泛型相关的信息会被擦除掉,以此使程序运行效率不受到影响,这个过程叫做类型擦除,也就是说泛型类和普通类在 java 虚拟机内是一样的。
List<String> strLis = new ArrayList<String>(); List<Integer> intLis = new ArrayList<Integer>(); System.out.println(strLis.getClass() == intLis.getClass());//true
泛型类List<String>和List<Integer>经过编译被类型擦除后类型均为java.util.ArrayList
思考:由于编译生成的字节码会丢掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其它类型的数据(反射中的知识点)。
在JDK 1.5中, 你还可以按原来的方式将各种不同类型的数据装到一个集合中,但编译器会报告unchecked警告。
最新文章
- PHP webservice的使用
- PHP关于web页面交互内容
- VS2013 ViewData ViewBag Ajax等关键词报错(当前上下文不存在名称)而且不提示也点不出来,但是可以正常运行,
- 「2014-3-13」Javascript Engine, Java VM, Python interpreter, PyPy &ndash; a glance
- 解决Apache/PHP无法启动的问题
- Java内存泄露及性能调优实例
- python成长之路【第二篇】:列表和元组
- 【转】jsonp详解
- SDP平台操作视频
- 分享自lordinloft 《[转载]COMPILE_OPT 的用法介绍》
- 带括号的四则混合运算的算符优先算法-----java实现
- poj 1659 Frogs&#39; Neighborhood (贪心 + 判断度数序列是否可图)
- LInux 下挂在Windows共享文件夹
- Python之路Day9
- Jsp分页实例---真分页
- (转)eclipse自动补全的设置
- [国嵌攻略][163][linux-usb软件系统架构]
- 剑指offer-两个链表的第一个公共节点
- Spring MVC中jsessionid所引起的问题 和解决
- dubbo负载均衡与集群集群容错
热门文章
- 模拟ArrayList
- 关于使用metronic时里modal模拟框使用ueditor时不能全屏的情况
- python 学习 (迟到的2017小结)
- Orchard Core 文档翻译 (四)CMS ModulesTitle (OrchardCore.Title)
- swift语言的特点(相对于oc)
- Uva 11491 暴力贪心
- ART_20190430
- 2018.12.30 Intellij IDEA设置main方法自动补全
- 2018.11.30 zsh: command not found: mysql 的解决办法mac环境下
- CentOS6.6上进程挂起的诡异问题和处理