Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用可比<;T>;使用泛型类_Java_Generics - Fatal编程技术网

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)


或者,我尝试使用
公共类节点,您需要告诉Java
T
扩展了
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