扩展java比较器以比较实现其比较的接口的特定类

时间:2013-02-26 20:55:09

标签: java inheritance interface comparator

我有一个像这样的比较器:

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

当前用于对Y实现X

的Y对象列表进行排序

我想为Y创建一个扩展XComparator的比较器,以便我可以根据Y的布尔数据成员进行比较,然后调用super.compare。

我已经尝试了几种不同的方法,但似乎没有任何方法可行。这甚至可能吗?

2 个答案:

答案 0 :(得分:7)

无法扩展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);
    }
}

答案 1 :(得分:0)

使用委托而不是继承。

您的YComparator应包含并委派给XComparator。