Java 使用可比<;T>;使用泛型类
一个新手问题(可能也是重复的),但有人能告诉我下面的代码有什么问题吗Java 使用可比<;T>;使用泛型类,java,generics,Java,Generics,一个新手问题(可能也是重复的),但有人能告诉我下面的代码有什么问题吗 public class Node<T> implements Comparable<Node<T>> { protected final Comparable<T> data; protected final List<Node<T>> adj; public Node(Comparable<T> data) {
public class Node<T> implements Comparable<Node<T>> {
protected final Comparable<T> data;
protected final List<Node<T>> adj;
public Node(Comparable<T> data) {
this.data = data;
adj = new ArrayList<Node<T>>();
}
@Override
public int compareTo(Node<T> other) {
return data.compareTo(other.data);
}
}
public类节点实现可比较{
受保护的最终可比数据;
受保护的最终清单;
公共节点(可比数据){
这个数据=数据;
adj=新的ArrayList();
}
@凌驾
公共整数比较(节点其他){
返回data.compareTo(其他数据);
}
}
compareTo方法显示编译错误:
Comparable中的compareTo(T)不能应用于(java.lang.Comparable)
或者,我尝试使用
公共类节点,您需要告诉JavaT
扩展了Comparable
,如下所示:
public static class Node<T extends Comparable<T>> implements Comparable<Node<T>> {
protected final T data;
protected final List<Node<T>> adj;
public Node(T data) {
this.data = data;
adj = new ArrayList<Node<T>>();
}
@Override
public int compareTo(Node<T> other) {
return data.compareTo(other.data);
}
}
然后试图将数据
与可比
进行比较,而不是T
,编译器反对,因为T
与可比
不兼容
注意:要获得更大的灵活性,请使用NodeAgreed。我会使用nodeeyes,我尝试了这个建议,效果很好,尽管我想知道我是否使用可比数据
而不是'T data',那么当我使用覆盖了compareTo(啊,明白了。在看到编辑之前发布了我的评论)。
Comparable<T> data