接口我有这样一个比较:扩展一个java比较来比较特定的类实现它比较了
public class XComparator implements Comparator<X>, Serializable {
}
当前用来排序Ÿ对象的列表,其中Y实现X
我想创建一个扩展XComparator的Y比较器,以便我可以根据Y的布尔数据成员进行比较,然后调用super.compare。
我已经尝试了几种不同的方法来解决这个问题,但是没有一种方法可以工作。这甚至有可能吗?
接口我有这样一个比较:扩展一个java比较来比较特定的类实现它比较了
public class XComparator implements Comparator<X>, Serializable {
}
当前用来排序Ÿ对象的列表,其中Y实现X
我想创建一个扩展XComparator的Y比较器,以便我可以根据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);
}
}
非常感谢! – Veg 2013-02-27 18:59:20
使用委托而不是继承。
您的YComparator应包含并委托给XComparator。
为什么要延长?只需创建一个新的并使用现有的。 – 2013-02-26 21:01:58