我知道 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)
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)
| 归档时间: |
|
| 查看次数: |
4607 次 |
| 最近记录: |