比较和等于方法堆栈溢出错误

Compare and equals methods stack overflow error

嗨,这是我第一次提问,所以可能不是最好的。 所以我正在研究一个使用继承和实现的项目。我的问题是当我 运行 我的比较或等于方法 java 给我一个堆栈溢出错误,我到处寻找解决这个问题但无法这样做。这可能只是一个简单的我不完全知道要问什么。

//this is from the class that inherits
@Override
public boolean equals(Object o){
    if(this.equals(o)){
        return true;
    }
    return false;
}
//This is what its inheriting from
public boolean equals(Object o){
    boolean findings;
    findings = this.getStrength().equals(((Weapon)o).getStrength());
    if(strength == ((Weapon)o).strength){
        return true;
    }
    return false;
}

//this code is an instance of another
@Override
public int compareTo(Force o) {
    return this.compareTo(o);
}

如果您能提供任何建议,我们将不胜感激。谢谢

public class Pizza extends Store {
public Pizza(int strong){
    super.changeStrength(strong);
}

@Override
public boolean equals(Object o){
    if(o!=null){
        if(super.getStrength()==((Pizza)o).getStrength()){
            return true;
        }
    }
    return false;
}
}

这里是披萨的代码class

更改为以下方法以避免递归,因为您正在从 equals 方法调用相同的 equals 方法。 this 指的是相同的 class 并且由于您已经覆盖了 equals 方法,它调用了相同的方法并且在没有任何退出条件的情况下变得递归。 WhosebugError 告诉您它卡在了递归循环中。

@Override
public boolean equals(Object o){
    if(super.equals(o)){
        return true;
    }
    return false;
}

更新

@Override
public boolean equals(Object o){
    if (this == o) return true;
    if (!(o instanceof Pizza)) return false;

    Pizza pizza = (Pizza) o;

    return getStrength() == pizza.getStrength();
}