我试图创建一个可比较的节点,并且只保存可比较的对象。
根据我对Java的理解,成员变量
value
E
,所以稍后当我在
compareTo()
,它应该仍然是类型
电子
,应该不需要强制转换,但编译器告诉我这不是以下情况:
incompatible types: java.lang.Comparable cannot be converted to E
.
我想应该已经是那种类型了
. 我为什么要投
o.value
键入
代码如下。
public class fakenode<E extends Comparable<E>> implements Comparable<fakenode> {
public E value;
fakenode (E value)
{
this.value = value;
}
@Override
public int compareTo(fakenode o) {
value.compareTo((E)o.value); // Why must I cast o to type E here?
o.value.compareTo(value); // This one works just fine
return -1;
}