2014-01-26 68 views
0
public abstract class SomeClass<Sometype extends OtherClass> extends Something implements Comparator<??>{ 

//code 

如何更換?在比較器中,它是任何擴展SomeClass的類?從抽象類實現比較器

+1

你的意思'SomeClass'或'SomeType'?還是你的意思是「Comparable」而不是「Comparator」?有一個比較器可以比較其他的比較器對象,這是沒有意義的。 –

+0

我想要實現的是確保SomeClass的每個子類型都將實現CompareTo方法 – user3236409

+1

因此,如果'x'和'y'是'SomeClass'的某個子類型的對象,那麼您希望能夠編寫' x.compareTo(y)',是嗎?如果是這樣,你會將'比較器'與'Comparable'混淆。 –

回答

2

,如果你想攜帶型界或簡單地允許SomeClass任何子類目前尚不清楚。

根據定義,您實現的compare方法將允許與任何子類型進行比較(因爲任何子類型在傳遞給方法時可以轉換爲更一般的父類型)。

允許任何參數化類型,而不是限制性Sometype,你可以寫:

public abstract class SomeClass<Sometype extends OtherClass> extends Something 
    implements Comparator<SomeClass<?>> 

這也是法律與顯式類型界限寫:

public abstract class SomeClass<Sometype extends OtherClass> extends Something 
    implements Comparator<SomeClass<Sometype>> 
0

你不能使用類似? extends SomeClass,但你可以只使用Comparator<SomeClass>和轉換爲你所需要的