【发布时间】:2017-09-19 17:35:57
【问题描述】:
我知道这听起来很混乱,但这是我能解释的最好的了。 (您可以建议一个更好的标题)。我有 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 时遇到错误
Bound mismatch:类型C不是A类型的有界参数
【问题讨论】:
-
首先,您的
C是B中的原始类型。并且还在C的compareTo方法中。这里大量混合了原始类型和泛型 - 这就是您遇到问题的原因。 -
是的,但是如果它实现了 Comparable,它不会工作吗?或者更好的是,有没有办法让它工作?
-
没有。因为您的
C<T>只能与原始类型C相媲美。正如我所说,你需要做更多的阅读。 -
明白了!所以说我要存储整数,应该是
A<C<Integer>> var = new A<C<Integer>();
标签: java generics comparable