MyException - 我的异常网
当前位置:我的异常网» J2SE » 什么是泛型擦除,该怎么处理

什么是泛型擦除,该怎么处理

www.MyException.Cn  网友分享于:2013-01-13  浏览:19次
什么是泛型擦除
什么是泛型擦除啊,能说明一下吗!!

------解决方案--------------------
Java泛型的悲哀啊,Java的泛型是使用擦除来实现的,擦除让很多东西都没有意义,或者说,在泛型代码内部,无法获得任何泛型参数类型的信息。
举个例子
ArrayList<String>和ArrayList<Integer>在程序运行的时候都是相同的类型,这两种类型都被擦除成了他们的原生类型ArrayList
------解决方案--------------------
JVM在实现泛型的时候是使用擦除功能来实现的,也就是JVM本身是不支持泛型的,比如:
List<Integer> integer = new ArrayList<Integer>();
这样的一段代码,针对调用者而言语法结构发生了改变,但是实际上针对JVM而言,它会去解析泛型语法,让后使它变成了原始版本:
List integer = new ArrayList();
这种情况就称为泛型的“擦除”,因为JVM本身不支持泛型,所以在实现的时候如同楼上的说的,这确实是Java泛型的悲哀,它没有真正使用泛型的标准原理实现JVM对泛型的编译,只是玩了个小小的花招
主要原因是JVM在推出泛型的时候实际上并没有对JDK的编译器进行改写,所以使用了擦除功能,也就是说,针对JVM本身而言:
上边两段代码都是一模一样的,没有区别,因为使用的“擦除”功能,在“擦除”过程里面,它会针对Java泛型的新语法进行类型检测操作,JVM本身不支持泛型,在编译器进行泛型代码的编译的时候,其实是使用了“擦除”功能,就是JVM在编译带泛型的代码的时候,实际上对带泛型的代码进行了类型检查,然后“擦除”泛型代码中的类型支持,转换为普通类型进行编译。这里有一个新概念成为“外露”类型——单独出现而不是位于某个类型中的类型参数如(List<T>中的T)针对T类型而言,T的上界就是Object。这一项技术的功能极其强大,我们可以使几乎所有泛型类型的精度增强,但是与JVM兼容。
这是一个“擦除”的快照,具体原理你可以参考前段时间我整理的Blog:
http://blog.csdn.net/silentbalanceyh/archive/2009/09/24/4586627.aspx

文章评论

那些争议最大的编程观点
那些争议最大的编程观点
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员和编码员之间的区别
程序员和编码员之间的区别
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
如何成为一名黑客
如何成为一名黑客
中美印日四国程序员比较
中美印日四国程序员比较
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员的鄙视链
程序员的鄙视链
老程序员的下场
老程序员的下场
一个程序员的时间管理
一个程序员的时间管理
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
每天工作4小时的程序员
每天工作4小时的程序员
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
代码女神横空出世
代码女神横空出世
程序员都该阅读的书
程序员都该阅读的书
 程序员的样子
程序员的样子
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
我的丈夫是个程序员
我的丈夫是个程序员
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员必看的十大电影
程序员必看的十大电影
旅行,写作,编程
旅行,写作,编程
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
漫画:程序员的工作
漫画:程序员的工作
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
鲜为人知的编程真相
鲜为人知的编程真相
10个调试和排错的小建议
10个调试和排错的小建议
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序员应该关注的一些事儿
程序员应该关注的一些事儿
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
Java程序员必看电影
Java程序员必看电影
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
总结2014中国互联网十大段子
总结2014中国互联网十大段子
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有