我使用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