我使用Java泛型编码。我想定义一个Binary Tree类,它一般可以接受任何类,并保证该类具有Comparator方法比较(T o1,T o2),以查看是否需要按照右侧或左侧子树插入进入我的二叉树。Java泛型比较器
public class treeDB <T implements Comparator> {
//define my binary tree methods
}
这是我最好的如何强制实施比较方法估算,但编译抛出一个错误,我不知道,足以知道就是了。
我使用Java泛型编码。我想定义一个Binary Tree类,它一般可以接受任何类,并保证该类具有Comparator方法比较(T o1,T o2),以查看是否需要按照右侧或左侧子树插入进入我的二叉树。Java泛型比较器
public class treeDB <T implements Comparator> {
//define my binary tree methods
}
这是我最好的如何强制实施比较方法估算,但编译抛出一个错误,我不知道,足以知道就是了。
试试这个
class treeDB <T extends Comparator<T>> {
...
工作。谢谢。 – morganw09dev
对于一个类型来说,它成为一个*比较器*本身是没有意义的 – newacct
这应该是public class treeDB <T extends Comparator>
,而不是public class treeDB <T implements Comparator>
。
首先,implements
应extends
更换。在泛型中,即使泛型类型实现接口,也使用关键字extends
。
其次,仅使用Comparator
将导致它为原始类型的警告。您必须对其进行参数化。这是您的解决方案:
public class treeDB <T extends Comparator<T>> {
}
每个人都提供了正确的语法,但你可能要考虑使用Comparable
在
class treeDB <T extends Comparable<T>>
的差别很微妙,也许它是不是更好的选择。但它从来没有伤害看。
我也认为'T'是'Comparable'更合理,而不是'T'本身''T'比较''。 –
我也会建议重命名:TreeDB。根据Java约定,类名应该在CamelCase中。 – Trein
你说得对。谢谢。 – morganw09dev
注意事项:如果你想'T'来执行,请看[[here](http://stackoverflow.com/questions/745756/java-generics-wildcarding-with-multiple-classes/745769#745769)]很少的接口,可能会扩展一些类。 – Pshemo