java中的Comparable是什么?

Lad*_*dih 1 java comparable

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

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);
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

DBu*_*Bug 5

Comparable 的那些用途意味着它们接受实现 Comparable 接口的任何类的对象。

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

public class Foo implements Comparable<Foo> {
    public int compareTo(Foo o) {...}
}
Run Code Online (Sandbox Code Playgroud)

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

List<Comparable> list = new ArrayList<Comparable>();
Run Code Online (Sandbox Code Playgroud)

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

list.add(new Foo());
Run Code Online (Sandbox Code Playgroud)