以下面这个简单例子演示:
这是父类
public abstract class GenericFather<T> {
public T getT(T t){
return t;
}
}
通过反编译可以得知编译后泛型擦出,T都用Object代替了
也就是说只要调用父类方法最后肯定返回的是个Object类型
public abstract class GenericFather
{
public GenericFather()
{
}
public Object getT(Object t)
{
return t;
}
}
那么问题来了,为何子类调用父类方法时可以不用强转就得到正确的类型?问题到底出在哪里?