这是我的代码中的一个示例:

基类:

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将此报告为问题。但是为什么呢?会发生什么?

我将如何正确实现解决方案?

最佳答案

Impl#compareTo(Impl)没有覆盖AbstractBase#compareTo(AbstractBase),因为它们没有相同的签名。换句话说,例如在使用Collections#sort时不会调用它。

关于java - 为什么定义协变compareTo方法被认为是不好的做法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24279691/

10-12 06:03