yve*_*owe 1 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> {}
Run Code Online (Sandbox Code Playgroud)
现在我编写了一个名为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;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我声明时BinarySearchTree<Entry> bst,总会出现编译错误:
"绑定不匹配:类型Entry不是BinarySearchTree类型的有界参数的有效替代"
我仍然是Java中泛型类型的新手.任何人都可以帮我解决问题吗?谢谢
您的Entry类需要实现Comparable<Entry>而不是raw Comparable,因为raw Comparable不匹配Comparable<T>.
public class Entry implements Comparable<Entry> { ... }
Run Code Online (Sandbox Code Playgroud)
使您的Entry类实现Comparable<Entry>,使其符合BinaryTree的合约.
合同说"所有类型T扩展(或实现)类型Comparable <T>".你用"Entry"替换"T",你会发现这是必需的:Entry extends Comparable<Entry>