8.5 泛型代码和虚拟机

虚拟机内部是不认识泛型的,编译的工作就是把泛型的类型替换成最能“万精油”的类型。


1 类型擦除

这才是真正编译器里面的代码。

public class Pair
{
    private Object first;
    private Object second;
    public Pair(Object first, Object second)
    {
        this.first = first;
        this.second = second;
    }
    public Object getFirst() { return first; }
    public Object getSecond() { return second; }
    public void setFirst(Object newValue) { first = newValue; }
    public void setSecond(Object newValue) { second = newValue; }
}

如果有多个限定,则默认选取第一个限定作为擦除后的替换类。


2 翻译泛型表达式

其实就是表达式前面自动加上强制类型转换而已。


3 翻译泛型方法

类型擦除后,可能产生方法冲突的问题,但是Java编译器会帮你解决的。

  • Java虚拟机没有泛型类
  • 所有的参数都用限定类型替换
  • 桥方法用来保护多态
  • 为保证类型的安全性,必要时插入强制类型转换。

4 调用遗留代码

不知道说的什么东东

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值