java - 继承层次结构对泛型的限制是什么?

标签 java generics

假设有类/接口(interface)层次结构:

class A<T>{
    T method(T t){
        return t;
    }
}
class B<T> extends A{
    T method(T t){ // method(T)' in 'B' clashes with 'method(T)' in 'A'; both methods have same erasure, yet neither overrides the other
        return t;
    }
}

如我们所见,存在编译器错误。 我从来没有遇到过继承时如何处理泛型的规则。有什么限制? (请不要与泛型本身的继承混淆,我问的是原始类中的继承

也不要与“什么是原始类型”混淆,我知道原始类型,在这个问题上我想弄清楚继承规则是什么)

也不要以为我想修复这个错误而感到困惑。当然 B 类扩展 A 修复它。我的问题是:“我在哪里可以阅读这些限制?”

最佳答案

您必须在类定义中使用 T,以便 T 通配符在 A 中绑定(bind)到相同的泛型类型和B,解决冲突:

class B<T> extends A<T>

关于java - 继承层次结构对泛型的限制是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54129774/

相关文章:

java - 如何在 Cloud Foundry 中将自定义 C 共享库与 Java 应用程序捆绑在一起?

c# - 无法将匿名类型传递给泛型构造函数

swift - 如何克服“"Generic parameter ' T' is not used in function signature”的错误?

c# - 使用不同的兼容类型覆盖属性

arrays - 如何加快通用数组的复制速度?

java - 制作 FPS 淋浴?

java - 使用 Java 解析 Facebook signed_request 返回格式错误的 JSON

java - 以编程方式跳过 TestNG 中的配置方法

java - 如何防止 Eclipse 在粘贴代码时自动导入包?

c# - 什么时候不使用通用集合?