我知道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);
}
...
}
答案 0 :(得分:4)
Comparable的这些用法意味着它们接受任何实现Comparable接口的类的对象。
但是Comparable仍然是一个界面。您无法专门创建Comparable类型的对象,但您可以将实现它的类的实例分配给该类型的变量。例如,如果有一个实现Comparable的类Foo,例如
public class Foo implements Comparable<Foo> {
public int compareTo(Foo o) {...}
}
然后我可以将Foo类的对象视为可比较对象。如果我有一个数组列表,如:
List<Comparable> list = new ArrayList<Comparable>();
我可以将Foo对象放入其中,因为它们实现了Comparable,例如
list.add(new Foo());