java 类型参数 T extends SelfBounded<T>的T在运行时会被擦除成什么类型

图片说明

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类型