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

标签 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);
     }
}

代码编译正确,但是当我调试时,我发现当从 SpecificClass 调用 myMethod 时,类型 TObject,而不是 CustomType,即使我在 SpecificClass 中扩展 GenericClass 时指定了 CustomType

怎么会呢?这是 Java 中泛型的限制吗?

最佳答案

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

看例子

关于Java:从具有指定类型的泛型类扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28875270/

相关文章:

JavaScript,意大利面条式代码和组织的问题

java - 如何在 Java 中加入两个列表?

java - 如何通过网络连接(使用 Java)以 String 形式发送当前时间戳?

C# 泛型 - 设计没有下限?

c++ - 何时使用 dynamic_cast 的可接受示例?

python - python中的字段继承访问

Java - 在不知道字符编码的情况下将 byte[] 转换为 String

java - 如何在 ant 文件调用批处理文件时构建失败,该批处理文件调用 ant 文件

c# - 如何创建必须从 Blazor 中具有泛型类型的类继承的泛型类型?

c# - 确保泛型方法中的参数基于同一类中的参数