为什么定义协变 compareTo 方法被认为是不好的做法?
下面是我代码中的一个示例:
基类:
abstract class AbstractBase implements Comparable<AbstractBase> {
private int a;
private int b;
public int compareTo(AbstractBase other) {
// compare using a and b
}
}
实现:
class Impl extends AbstractBase {
private int c;
public int compareTo(Impl other) {
// compare using a, b and c with c having higher impact than b in AbstractBase
}
FindBugs 将此报告为问题。但这是为什么呢?可能会发生什么?
如何正确实施解决方案?