gpt4 book ai didi

java - 从抽象类的子类调用 toString() 方法,会抛出 stackoverflowerror 异常

转载 作者:行者123 更新时间:2023-11-30 06:08:22 25 4
gpt4 key购买 nike

在此代码中,我有一个重写的 toString() 方法。我在 ArithBinaryExpression 类的子类 AddExpression 中调用这个 toString() 方法。它向我抛出一个异常,该异常返回到 toString() 方法。我想解决这个堆栈溢出错误。任何帮助表示赞赏!

Exception in thread "main" java.lang.StackOverflowError
at main$AddExpression.toString(main.java:20)
<小时/>
  public class ArithValue implements ArithExpression {
private double doubValue;

ArithValue(double dVal) {
this.doubValue = dVal;
}

public double result() {
return doubValue;
}
@Override
public String toString() {
return String.valueOf(doubValue);
}

}



public static class AddExpression extends ArithBinaryExpression {
public AddExpression(ArithExpression leftExp, ArithExpression rightExp) {
super(leftExp, rightExp);
}

public double result() {
double rightExp = getRightExpression().result();
double leftExp = getLeftExpression().result();
return rightExp + leftExp;
}

public String toString() {
return "Expression: " + "(" + leftExpression.toString() + " + " + rightExpression.toString() + ")";
}
}
<小时/>
public abstract class ArithBinaryExpression implements ArithExpression {
protected static ArithExpression leftExpression;
protected static ArithExpression rightExpression;

// constructor
public ArithBinaryExpression(ArithExpression left, ArithExpression right) {
if (left == null) {
leftExpression = new ArithValue(0);
}
else
leftExpression = left;

if (right == null) {
rightExpression = new ArithValue(0);
}
else
rightExpression = right;


}
// end constructor

// accessors
public ArithExpression getLeftExpression() {
return leftExpression;
}

public ArithExpression getRightExpression() {
return rightExpression;
}

}

这是 ArithExpression 接口(interface):

public interface ArithExpression {
public abstract double result();
}

最佳答案

推测:由于您对 leftExpression 和 rightExpression 使用静态变量,您的错误正在显现出来。

粘贴 main 方法可以让我们确定猜想是否正确,但这似乎是你不想要的东西

关于java - 从抽象类的子类调用 toString() 方法,会抛出 stackoverflowerror 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50789983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com