java
泛型,原始类型,桥接方法
分类: 人阅读评论收藏举报
编译器 虚拟机
上的一篇 泛型的文章,也不错。!""###$%$&""'(")(
***********************************************************************
*****************************
今天深入学习了下 泛型。看了 中的泛型部分,然后网上看了些资料,发现这篇
博客写的很好,表达很清楚。摘抄如下
原文链接:!""')$($&$"("')+,-$!&'
....... 泛型的本质是什么哪?虚拟机是如何对泛型进行处理的的那?
$虚拟机中并没有泛型类型对象,所有的对象都是一样的,都属于普通的类。由于 / 根本不
支持泛型类型,是编译器“耍了个花招”,使得似乎存在对泛型类型的支持―它们用泛型类型信
息检查所有的代码,但随即“擦除”所有的泛型类型并生成只包含普通类型的类文件。泛型类在
源码上看起来与一般的类不同,在执行时被虚拟机翻译成对应的“原始类型”。泛型类的类
型参数列表被去掉,虚拟机用类型参数的限定类型对使用类型参数的地方进行了替换,如果没
有限定类型则使用 0 类型进行替换。这个过程就是所谓的“类型擦除”。类型参数如果有多
个限定,则使用第一个限定类型做替换。泛型方法也会做相同的替换。
例如类 1234
5''((12346
...3(7
...3(7
...5'13(83(6
.......!($(*(7
.......!($(*(7
...9
...5'(:(3(6
.......!($(*(7
...9
...5'3):(6
.......5(7
...9
...5'(3(6
.......!($(*(7
...9
...
""..5'(0(6
""......!($(*3(7
""..9
...5'3)6
.......5(7
...9
9