java - 绑定(bind)不匹配 : Generic class (of a Generic class extending Comparable (of a Generic class extending Comparable))

标签 java generics comparable

我知道这听起来很困惑,但这是我能解释的最好的了。 (您可以建议一个更好的标题)。我有 3 节课:-

A

public class A <T extends Comparable<T>> {
    ...
}

B

public class B {
    A<C> var = new A<C>(); 
    // Bound mismatch: The type C is not a valid substitute for the bounded parameter <T extends Comparable<T>> of the type A<T>
    ...
}

C

public class C <T extends Comparable<T>> implements Comparable<C>{
    private T t = null;
    public C (T t){
        this.t = t; 
    }
    @Override
    public int compareTo(C o) {
        return t.compareTo((T) o.t);
    }
    ...
}

我尝试在 B 中实例化 A 时遇到错误

绑定(bind)不匹配:类型 C 不是类型 A 的有界参数 > 的有效替代

最佳答案

感谢上面@Boris the Spider 的评论

问题是 CB 中的原始类型 。更改实例化以包含参数(根据需要)

A< C<Integer> > var = new A< C<Integer> >();

编辑1: 另外,感谢下面的评论。更好的做法是将 C 中的compareTo 方法更改为此,

public int compareTo(C<T> o) {
    return t.compareTo(o.t);
}

编辑2: 另外,问题中有一个拼写错误(w.r.t.下面的评论)

public class C <T extends Comparable<T>> implements Comparable< C<T> >{...}

关于java - 绑定(bind)不匹配 : Generic class (of a Generic class extending Comparable (of a Generic class extending Comparable)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30019440/

相关文章:

ios - 在 Swift 中使用 Comparable 扩展 @objc 协议(protocol)

java - Java中的可比实现

java - 两个角色的 SecurityConfig

java - 如何根据 Java Web 应用程序中的用户请求在两个数据库之间切换?

Java ImageReader 不返回图像

java - 在 fragment 内滚动 RecyclerView 时,应用程序的工具栏不会折叠

swift - 为什么 swift 不使用没有类型约束的通用返回参数来推断适当的重载函数?

java - 如何找到引用方法的第一个声明方法

c# - 泛型的默认值

java - Java 中可比较接口(interface)与通用静态方法的使用