我有一个名为Individuo的抽象类,它实现了Comparable<Individuo>接口。
但是,当我尝试覆盖子类中的方法时,它实现了以下方法:

@Override
public int compareTo(Object o) {
    return 0;
}


它不应该实现以下内容吗?

@Override
public int compareTo(Individuo o) {
    return 0;
}


这是声明

个人:

public abstract class Individuo<I extends Individuo> implements Cloneable, Comparable<Individuo>


Individuo_MultiOOP(子):

public class Individuo_MultiOOP extends Individuo implements Cloneable

最佳答案

子级可能扩展了Individuo的原始版本,该版本已通过某些参数进行了概括。

在这种情况下,子代中的compareTo(Object o)将编译:

abstract class Individuo<T> implements Comparable<Individuo<T>> {}

class Child extends Individuo {
    @Override
    public int compareTo(Object o) {
        return 0;
    }
}


确保子级使用提供的所有通用参数扩展正确的Individuo

class Child extends Individuo<Child> {
    @Override
    public int compareTo(Object o) { // this shouldn't compile
        return 0;
    }
}

09-17 12:33