class SelfBounded>
{
T element;
SelfBounded<T> set(T arg)
{
element = arg;
return this;
}
T get()
{
return element;
}
}
请问类型参数 T extends SelfBounded的T在运行时会被擦除成什么类型
T是SelfBounded或者其子类
类型擦除指的是通过类型参数合并,将泛型类型实例关联到同一份字节码上。编译器只为泛型类型生成一份字节码,并将其实例关联到这份字节码上。类型擦除的关键在于从泛型类型中清除类型参数的相关信息,并且再必要的时候添加类型检查和类型转换的方法。
类型擦除可以简单的理解为将泛型java代码转换为普通java代码,只不过编译器更直接点,将泛型java代码直接转换成普通java字节码
范型擦出过程
1.将所有的泛型参数用其最左边界(最顶级的父类型)类型替换。
2.移除所有的类型参数。
答案是SelfBounded类型