绑定不匹配:通用类(扩展Comparable的Generic类(扩展Comparable的Generic类))

时间:2015-05-03 21:09:43

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

我在A

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

绑定不匹配:类型C不是有界参数的有效替代&lt; T扩展可比较&lt; T> &GT; A型

1 个答案:

答案 0 :(得分:5)

感谢@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> >{...}