我正在使用 Java 泛型进行编码。我想定义一个能够接受任何类的二叉树类,并保证该类具有 Comparator 方法 compare(T o1, T o2) 以查看我是否需要遵循右子树或左子树进行插入进入我的二叉树。
public class treeDB <T implements Comparator> {
//define my binary tree methods
}
这是我对如何强制实现 Comparator 方法的最佳估计,但是编译会引发错误,我不知道它想要什么。
尝试这个
class treeDB <T extends Comparator<T>> {
...
每个人都提供了正确的语法,但您可能要考虑使用Comparableas
class treeDB <T extends Comparable<T>>
差异是微妙的,也许这不是更好的选择。但它永远不会伤害看。
首先,implements应该替换为extends. 在泛型extends中,即使泛型类型实现了接口,也会使用关键字。
其次,仅使用Comparator会导致警告它是原始类型。您必须对其进行参数化。这是您的解决方案:
public class treeDB <T extends Comparator<T>> {
}
这应该是public class treeDB <T extends Comparator>,不是public class treeDB <T implements Comparator>。