2013-10-07 137 views
1

我使用Java泛型编码。我想定义一个Binary Tree类,它一般可以接受任何类,并保证该类具有Comparator方法比较(T o1,T o2),以查看是否需要按照右侧或左侧子树插入进入我的二叉树。Java泛型比较器

public class treeDB <T implements Comparator> { 
    //define my binary tree methods 
} 

这是我最好的如何强制实施比较方法估算,但编译抛出一个错误,我不知道,足以知道就是了。

+2

我也会建议重命名:TreeDB。根据Java约定,类名应该在CamelCase中。 – Trein

+0

你说得对。谢谢。 – morganw09dev

+1

注意事项:如果你想'T'来执行,请看[[here](http://stackoverflow.com/questions/745756/java-generics-wildcarding-with-multiple-classes/745769#745769)]很少的接口,可能会扩展一些类。 – Pshemo

回答

3

试试这个

class treeDB <T extends Comparator<T>> { 
... 
+0

工作。谢谢。 – morganw09dev

+0

对于一个类型来说,它成为一个*比较器*本身是没有意义的 – newacct

1

这应该是public class treeDB <T extends Comparator>,而不是public class treeDB <T implements Comparator>

2

首先,implementsextends更换。在泛型中,即使泛型类型实现接口,也使用关键字extends

其次,仅使用Comparator将导致它为原始类型的警告。您必须对其进行参数化。这是您的解决方案:

public class treeDB <T extends Comparator<T>> { 

} 
+2

其次呢? – morganw09dev

+0

@MorganK,我正在研究它:-) –

+0

第二感谢。 – morganw09dev

3

每个人都提供了正确的语法,但你可能要考虑使用Comparable

class treeDB <T extends Comparable<T>> 

的差别很微妙,也许它是不是更好的选择。但它从来没有伤害看。

+0

我也认为'T'是'Comparable'更合理,而不是'T'本身''T'比较''。 –