Java:从具有指定类型的泛型类扩展

时间:2015-03-05 10:15:18

标签: java generics inheritance

我试图扩展泛型类,例如:

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中泛型的限制吗?

1 个答案:

答案 0 :(得分:2)

类型参数T在运行时(调试期间)不可用。这确实是Java中泛型的限制,并称为类型擦除。 (如您所见,所有类型参数都转换为Object。)

参见例如