![](/img/trans.png)
[英]A way to create an interface extending comparator interface that compares current subclass only
[英]Extending a java comparator to compare a specific class implementing the interface it compares for
我有一个像这样的比较器:
public class XComparator implements Comparator<X>, Serializable {
}
当前用于对Y实现X的Y对象列表进行排序
我想为Y创建一个扩展XComparator的比较器,以便我可以根据Y的布尔数据成员进行比较,然后调用super.compare。
我已经尝试了几种不同的方法,但似乎没有任何方法可行。 这甚至可能吗?
无法扩展XComparator
并将Comparator
上的泛型参数更改为Y
,但您可以创建一个YComparator
类, XComparator
内部只有一个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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.