边界不匹配:通用 class(通用 class 扩展可比(通用 class 扩展可比))
Bound Mismatch : Generic class (of a Generic class extending Comparable (of a Generic class extending 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
时遇到错误
边界不匹配:类型 C 不是类型 A 的有界参数 < T extends Comparable < T > > 的有效替代
感谢@Boris the Spider 上面的评论
问题是 C
是 B
中的原始类型
.更改实例化以包含参数(取决于需要)
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> >{...}
我知道这听起来令人困惑,但这是我能解释的最好的了。 (你可以建议一个更好的标题)。我有 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
时遇到错误
边界不匹配:类型 C 不是类型 A 的有界参数 < T extends Comparable < T > > 的有效替代
感谢@Boris the Spider 上面的评论
问题是 C
是 B
中的原始类型
.更改实例化以包含参数(取决于需要)
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> >{...}