java 中的 Comparable 是什么?

what is Comparable in java?

我知道 Comparable 是一个接口,但我看到了一些代码,例如 ArrayList<Comparable>public Comparable f()public void f(Comparable a)。 Comparable 似乎是 class。上面那些代码是如何实现的?

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 接口的 class 的对象。

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

public class Foo implements Comparable<Foo> {
    public int compareTo(Foo o) {...}
}

然后我可以将 class Foo 的对象视为 Comparables。如果我有一个像这样的数组列表:

List<Comparable> list = new ArrayList<Comparable>();

我可以将 Foo 对象放入其中,因为它们实现了 Comparable,例如

list.add(new Foo());