接口我有這樣一個比較:擴展一個java比較來比較特定的類實現它比較了
public class XComparator implements Comparator<X>, Serializable {
}
當前用來排序Ÿ對象的列表,其中Y實現X
我想創建一個擴展XComparator的Y比較器,以便我可以根據Y的布爾數據成員進行比較,然後調用super.compare。
我已經嘗試了幾種不同的方法來解決這個問題,但是沒有一種方法可以工作。這甚至有可能嗎?
接口我有這樣一個比較:擴展一個java比較來比較特定的類實現它比較了
public class XComparator implements Comparator<X>, Serializable {
}
當前用來排序Ÿ對象的列表,其中Y實現X
我想創建一個擴展XComparator的Y比較器,以便我可以根據Y的布爾數據成員進行比較,然後調用super.compare。
我已經嘗試了幾種不同的方法來解決這個問題,但是沒有一種方法可以工作。這甚至有可能嗎?
這是不可能延長XComparator
和Comparator
泛型參數更改爲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);
}
}
非常感謝! – Veg 2013-02-27 18:59:20
使用委託而不是繼承。
您的YComparator應包含並委託給XComparator。
爲什麼要延長?只需創建一個新的並使用現有的。 – 2013-02-26 21:01:58