我试图扩展泛型类,例如:
public class GenericClass<T> implements GenericClassInterface<T>
{
public T myMethod(String typeID) {
T test = _get_test_value_; // here I use jackson to retrieve T de-serialized from JSON
return T;
}
}
然后我扩展了那个课程:
public class SpecificClass extends GenericClass<CustomType> implements SpecificClassInterface
{
public CustomType getIstance(String typeID) {
return super.myMethod(typeID);
}
}
代码编译正确,但是当我调试时,我发现类型T
,当从SpecialClass调用myMethod时,Object
而不是CustomType
,即使我指定{我在CustomType
GenericClass
中展开SpecificClass
时{1}}
为什么?这是Java中泛型的限制吗?
答案 0 :(得分:2)
类型参数T
在运行时(调试期间)不可用。这确实是Java中泛型的限制,并称为类型擦除。 (如您所见,所有类型参数都转换为Object
。)
参见例如