我有这个简单的节点:
public class Node<T> implements Comparable<Node>{
T value;
Node<T> next;
public Node(T value){
this.value = value;
this.next = null;
}
public int compareTo(Node other){
return this.value.compareTo(other.value);
}
}
日食变得聪明,并要求我施放“this.value”。用int转换它不起作用。应该怎么做?
答案 0 :(得分:4)
您对T的声明并未“延伸”可比较,因此您无法使用它进行比较。
您可以将其更改为:
curl
这假设T实现了Comparable。 否则,如果T实际上不具有可比性,您可以在节点级别进行比较。但是你应该仍然像这样声明你的类
public class Node<T extends Comparable<T>> implements Comparable<Node<T>>{
T value;
Node<T> next;
public Node(T value){
this.value = value;
this.next = null;
}
public int compareTo(Node<T> other){
return this.value.compareTo(other.value);
}
}
这样您在进行比较时就可以使用public class Node<T extends Something>
中的方法。
如果我回到开头:当你实例化你的Node时,你会做这样的事情:
Something
MyType成为您的T. MyType是否具有可比性?如果是这样,您可以如上所示声明您的课程。否则,您将无法执行T.compareTo(又名MyType.compareTo),因此您需要使用MyType中的其他字段执行比较。
我希望这很清楚......