我有一个像这样的比较器:
public class XComparator implements Comparator<X>, Serializable {
}
当前用于对 Y 实现 X 的 Y 对象列表进行排序
我想为 Y 创建一个扩展 XComparator 的比较器,以便我可以基于 Y 的布尔数据成员进行比较,然后调用 super.compare。
我已经尝试了几种不同的方法,但似乎都没有。这甚至可能吗?
我有一个像这样的比较器:
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);
}
}
使用委托而不是继承。
您的 YComparator 应该包含并委托给 XComparator。