2013-02-26 146 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。