java中的泛型二进制搜索树

时间:2012-06-05 13:43:05

标签: java generics binary-search-tree

我想实现泛型类型二叉搜索树。声明如下:

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不是有效的替代   有界参数&gt;这种类型   BinarySearchTree“

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

2 个答案:

答案 0 :(得分:6)

您的Entry课程需要实施Comparable<Entry>而不是原始Comparable,因为原始ComparableComparable<T>不匹配。

public class Entry implements Comparable<Entry> { ... }

答案 1 :(得分:5)

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

合同说“扩展(或实施)类型Comparable&lt; T&gt;”的所有类型T.你用“Entry”替换“T”,你会发现这是必需的:Entry extends Comparable<Entry>