2013-02-26 108 views
3

接口我有這樣一個比較:擴展一個java比較來比較特定的類實現它比較了

public class XComparator implements Comparator<X>, Serializable { 
} 

當前用來排序Ÿ對象的列表,其中Y實現X

我想創建一個擴展XComparator的Y比較器,以便我可以根據Y的布爾數據成員進行比較,然後調用super.compare。

我已經嘗試了幾種不同的方法來解決這個問題,但是沒有一種方法可以工作。這甚至有可能嗎?

+0

爲什麼要延長?只需創建一個新的並使用現有的。 – 2013-02-26 21:01:58

回答

7

這是不可能延長XComparatorComparator泛型參數更改爲Y,但你可以創建一個YComparator類只是有一個XComparator內部和代表它。例如:

public class YComparator implements Comparator<Y>, Serializable { 
    private XComparator xComparator = new XComparator(); 

    @Override 
    public int compare(Y y1, Y y2) { 
     // compare y1.booleanData with y2.booleanData 
     if (...) 
      ...; 

     // else otherwise: 
     return xComparator.compare(y1, y2); 
    } 
} 
+0

非常感謝! – Veg 2013-02-27 18:59:20

0

使用委託而不是繼承。

您的YComparator應包含並委託給XComparator。