3

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

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

当前用于对 Y 实现 X 的 Y 对象列表进行排序

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

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

4

2 回答 2

9

无法将XComparator泛型参数扩展和更改ComparatorY,但您可以创建一个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);
    }
}
于 2013-02-26T21:02:45.120 回答
0

使用委托而不是继承。

您的 YComparator 应该包含并委托给 XComparator。

于 2013-02-26T21:02:55.540 回答