2013-10-07 138 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'比較''。 –