Java 绑定不匹配:泛型类(泛型类的扩展可比(泛型类的扩展可比))
我知道这听起来很困惑,但我只能这样解释了。(你可以建议一个更好的标题)。我有三门课:-Java 绑定不匹配:泛型类(泛型类的扩展可比(泛型类的扩展可比)),java,generics,comparable,Java,Generics,Comparable,我知道这听起来很困惑,但我只能这样解释了。(你可以建议一个更好的标题)。我有三门课:- A public class A <T extends Comparable<T>> { ... } C public class C <T extends Comparable<T>> implements Comparable<C>{ private T t = null; public C (T t){
A
public class A <T extends Comparable<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);
}
...
}
public类实现了可比较的{
私有T=null;
公共C(T){
t=t;
}
@凌驾
公共内部比较(C o){
返回t.compareTo((t)o.t);
}
...
}
我尝试在B
中实例化A
时出错
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>
...
}
绑定不匹配:由于@Boris The Spider上面的注释,类型C不是类型a的绑定参数
C
是B
. 更改了实例化以包含参数(取决于需要)
编辑2:
此外,问题中有一个打字错误(下面是w.r.t.的评论)
公共类C实现了类似的{…}
感谢上面的评论@Boris the Spider
问题是C
是B
. 更改了实例化以包含参数(取决于需要)
编辑2:
此外,问题中有一个打字错误(下面是w.r.t.的评论)
公共类C实现了类似的{…}
首先,您的C
是B
中的一个rawtype。在C
的比较方法中。这里有大量的原始类型和泛型混合,这就是为什么会有问题。是的,但是如果它实现了Comparable,它会工作吗?或者更好的是,我有办法让它工作吗?没有。因为你的C
只能与rawtypeC
相比。就像我说的,你需要多读点书。明白了!假设我想存储整数,它应该是A var=new AFor,而你的C
是B
中的一个rawtype。在C
的比较方法中。这里有大量的原始类型和泛型混合,这就是为什么会有问题。是的,但是如果它实现了Comparable,它会工作吗?或者更好的是,我有办法让它工作吗?没有。因为你的C
只能与rawtypeC
相比。就像我说的,你需要多读点书。明白了!假设我想存储整数,它应该是A var=new A你也在C
本身中使用原始类型C
。你说得对!虽然没有必要,但我得到了一个警告。您使用原始类型C
的另一个地方是public类C
。它应该是
公共C类
。如果你使用原始类型,可能会发生一些非常奇怪的事情,所以要不惜一切代价避免它们。你也在C
本身中使用原始类型C
。你是对的!虽然没有必要,但我得到了一个警告。您使用原始类型C
的另一个地方是public类C
。它应该是
公共C类
。如果使用原始类型,可能会发生一些非常奇怪的事情,所以要不惜一切代价避免它们。
A< C<Integer> > var = new A< C<Integer> >();
public int compareTo(C<T> o) {
return t.compareTo(o.t);
}
public class C <T extends Comparable<T>> implements Comparable< C<T> >{...}