我知道这听起来令人困惑,但这是我能解释的最好的。 (您可以建议一个更好的标题)。我有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不是类型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:
另外,问题中有错别字(以下有注释)

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

10-06 15:35