java中什么是可比较的?

java中什么是可比较的?,java,comparable,Java,Comparable,我知道Comparable是一个接口,但我看到了一些代码,如ArrayList、public Comparable f、public void fComparable a。 这似乎是一门课。上述代码是如何实现的 import java.util.*; public class MinHeap { public MinHeap() { elements = new ArrayList<Comparable>(); elements.ad

我知道Comparable是一个接口,但我看到了一些代码,如ArrayList、public Comparable f、public void fComparable a。 这似乎是一门课。上述代码是如何实现的

import java.util.*;
public class MinHeap
{
    public  MinHeap()
    {
        elements = new ArrayList<Comparable>();
        elements.add(null); 
    }
    ....
}

public class BinarySearchTree
{
    ...
    public void add(Comparable obj)
    {
        Node newNode = new Node();
        newNode.data = obj;
        newNode.left = null;
        newNode.right = null;
        if (root == null) root = newNode;
        else root.addNode(newNode);
    }
    ...
}

使用Comparable意味着它们接受实现Comparable接口的任何类的对象

但Comparable仍然是一个接口。您不能专门创建Comparable类型的对象,但可以将实现该对象的类的实例指定给该类型的变量。例如,如果有一个类Foo实现了Comparable,例如

public class Foo implements Comparable<Foo> {
    public int compareTo(Foo o) {...}
}
list.add(new Foo());

使用Comparable意味着它们接受实现Comparable接口的任何类的对象

但Comparable仍然是一个接口。您不能专门创建Comparable类型的对象,但可以将实现该对象的类的实例指定给该类型的变量。例如,如果有一个类Foo实现了Comparable,例如

public class Foo implements Comparable<Foo> {
    public int compareTo(Foo o) {...}
}
list.add(new Foo());

它似乎是一种数据类型,嗯?我想看看这些代码。以这种方式使用Comparable是非常罕见的。如果您在代码中看到这种情况,它可能不是好代码,或者非常旧,因为Comparable是泛型类型,所以所有这些声明都应该提到它的基类型。@realpoint。原始类型很糟糕。@AlainO'Dea:我已经还原了你的更改。你不能比较一个ArrayListi的两个元素它看起来像是一个可比较的数据类型哈?我想看看这些代码。以这种方式使用Comparable是非常罕见的。如果您在代码中看到这种情况,它可能不是好代码,或者非常旧,因为Comparable是泛型类型,所以所有这些声明都应该提到它的基类型。@realpoint。原始类型很糟糕。@AlainO'Dea:我已经还原了你的更改。实际上,你不能比较一个数组多形的两个元素,一个是精细多形,一个是精细多形