嗨,这是我第一次提问,所以可能不是最好的。 所以我正在使用继承和实现的项目。我的问题是,当我运行我的比较或等于方法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;
}
}
这里是披萨类的代码
答案 0 :(得分:1)
更改为以下方法以避免递归,因为您从equals方法调用相同的equals方法。 @Override
public boolean equals(Object o){
if(super.equals(o)){
return true;
}
return false;
}
指的是同一个类,因为你已经覆盖了equals方法,所以它调用相同的方法并且在没有任何退出条件的情况下变为递归。 StackOverFlowError告诉你它停留在递归循环中。
@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();
}
declare @serialNo
update top(1) Books
set
@serialNo = serialNo,
status = 'R',
user = @userId
where
book = @bookId and
status = 'F'