Java 比较两种泛型类型
我想创建一个泛型二进制树,但是我在弄清楚为什么不能比较泛型类型的两个值时遇到了一些问题Java 比较两种泛型类型,java,generics,Java,Generics,我想创建一个泛型二进制树,但是我在弄清楚为什么不能比较泛型类型的两个值时遇到了一些问题 public class Node <E extends Comparable<E> > implements Comparable<Node> { private E value; public Node(E value){ this.value = value; } public E getValue() { return value; } @O
public class Node <E extends Comparable<E> > implements Comparable<Node> {
private E value;
public Node(E value){
this.value = value;
}
public E getValue() {
return value;
}
@Override
public int compareTo(Node o) {
int a = value.compareTo(o.getValue()));
return a;
}
public类节点实现可比较{
私人股本价值;
公共节点(E值){
这个值=值;
}
公共E getValue(){
返回值;
}
@凌驾
公共整数比较(节点o){
inta=value.compareTo(o.getValue());
返回a;
}
我一直在得到一个关于行:value.compareTo(o.getValue())的错误。
它说我必须将o.getValue强制转换为类型E,但它已经是类型E的了
我怎样才能解决这个问题呢?我已经尝试过使IG值具有可比性,但这仍然不能解决我的问题
thx
Thx
编辑:通过执行以下操作解决:
它应该是public int compareTo(Node o)并实现Comparable>它应该是
public int compareTo(Node o)
并实现Comparable
是的,这解决了它,我不得不将接口更改为Comparable以使其工作,非常感谢。在英语中,也就是说:一个节点不能与所有节点(原始类型)进行比较,但仅适用于与自身类型相同的节点。列表
不应与列表
相比较,因为这样它就可以与列表
相比较。列表
应与其他列表
相比较。它应该是公共int compareTo(节点o)
和实现Compariable
是的,这解决了它,我不得不将接口更改为Compariable以使其正常工作,非常感谢。在英语中,即:一个节点不能与所有节点(原始类型)进行比较,但仅适用于与自身类型相同的节点。列表
不应与列表
相比较,因为这样它可以与列表
相比较。列表
应与其他列表
相比较。