扩展java comparator以比较实现它所比较的接口的特定类
我有一个这样的比较器:扩展java comparator以比较实现它所比较的接口的特定类,java,inheritance,interface,comparator,Java,Inheritance,Interface,Comparator,我有一个这样的比较器: public class XComparator implements Comparator<X>, Serializable { } 公共类XComparator实现可序列化的比较器{ } 当前用于对Y对象列表进行排序,其中Y实现X 我想为Y创建一个扩展XComparator的比较器,这样我就可以基于Y的布尔数据成员进行比较,然后调用super.compare 我尝试过几种不同的方法,但似乎都不管用。这可能吗 不可能扩展XComparator并将Comp
public class XComparator implements Comparator<X>, Serializable {
}
公共类XComparator实现可序列化的比较器{
}
当前用于对Y对象列表进行排序,其中Y实现X
我想为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 XComparator=新的XComparator();
@凌驾
公共整数比较(Y y1,Y y2){
//比较y1.booleanData和y2.booleanData
如果(…)
...;
//否则:
返回xComparator.compare(y1,y2);
}
}
使用委派而不是继承
您的YComparator应该包含并委托给XComparator。为什么要扩展?只需创建一个新的,并使用现有的。