我有一个这样的比较器:

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

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

我想为Y创建一个扩展XComparator的比较器,以便我可以基于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);
    }
}

09-25 22:05