比较和等于方法堆栈溢出错误
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();
}
嗨,这是我第一次提问,所以可能不是最好的。 所以我正在研究一个使用继承和实现的项目。我的问题是当我 运行 我的比较或等于方法 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();
}