2011-11-28 32 views
1

我試圖定義一個接口,使所有的實現類必須Comparable自己和他們的子類。定義一個接口,實現可比較

例如,請考慮:

public interface Rating implements Comparable<Rating> {} 

這意味着實現類必須與所有等級:

public class A implements Rating { 
    public int compareTo(Rating r) {return 0;} 
} 

我想鬆開了這個需求,我可以定義一個類像:

public class A implements Rating { 
    public int compareTo(A a) {return 0;} 
} 
+3

'interface'擴展了另一個'interface'沒有實現。 –

+2

你想要做什麼? –

+1

無法完成。從根本上說,你需要在Rating上寫一個類型「實際實現這個接口的類的類型」,並且在Java中沒有辦法做到這一點。我認爲這是所謂的「依賴型」的情況;這些只存在於少數研究語言中,尚未完全解決。 –

回答

-1
  1. 我想你可能想你「的compareTo()」返回的東西,除了「0」;)

  2. 您可以使用「的instanceof」,看看任意對象是一些特別的類(或子類)

  3. 我不確定重載「compareTo()」是一個好主意。你甚至可能想要輸入參數「Object o」。

恕我直言.. PSM

+0

在我看來,你已經在問題被充分定義之前回答了問題。編輯:不是我的順便投票。 –

2

我希望你想要知道的是這樣的:

public class Rating implements Comparable<? extends Rating> { 
    ... 
} 

也許(雖然我不知道你能做到這一點):

public interface Rating extends Comparable<? extends Rating> { 
    ... 
} 

有關有界通配符的更多信息,請參閱this page at Oracle