1

我想实现一个通用类型的二叉搜索树。声明如下:

public BTNode<T> {}

public class BinaryTree<T extends Comparable<T>> {}

public class BinarySearchTree <T extends Comparable<T>> extends BinaryTree<T> {}

现在我编写了一个名为 Entry 的类,并希望将此类的实例存储在 BinarySearchTree 中。

public class Entry implements Comparable{
private String firstName, lastName, address, phoneNumber;

public Entry(String fName, String lName, String address, String phoneNum) {
    this.firstName = fName;
    this.lastName = lName;
    this.address = address;
    this.phoneNumber = phoneNum;
}

public int compareTo(Object arg0) {
    // TODO Auto-generated method stub
    return 0;
}
}

但是当我声明时BinarySearchTree<Entry> bst,总是有一个编译错误说:

“绑定不匹配:Entry 类型不是 BinarySearchTree 类型的有界参数 > 的有效替代品”

我对 Java 中的泛型类型还是很陌生。有人可以帮我解决问题吗?谢谢

4

2 回答 2

6

您的Entry类需要实现Comparable<Entry>而不是 raw Comparable,因为 rawComparable不匹配Comparable<T>

public class Entry implements Comparable<Entry> { ... }
于 2012-06-05T13:47:51.357 回答
5

实现您的 Entry 类Comparable<Entry>,使其符合 BinaryTree 的约定。

合同说“扩展(或实现)类型 Comparable<T> 的所有类型 T”。在您将“T”替换为“Entry”时,您会看到这是必需的:Entry extends Comparable<Entry>

于 2012-06-05T13:48:12.620 回答