遇到一个神坑
程序可以正常运行, 但是debug报如下错
Method threw 'java.lang.StackOverflowError' exception. Cannot evaluate bekyiu.parser.ast.Variable.toString()
定位到出错的类
@Data
@NoArgsConstructor
public abstract class ASTNode
{
protected List<ASTNode> children = new ArrayList<>();
protected ASTNode parent;
...
}
debug模式下要显示信息, 就会调用该类的toString方法, 因为我的toString方法是lombok自动生成的, 所以会打印所有成员
故会调用当前节点的parent节点的toString方法, 而parent也是ASTNode类型, 所以会打印children中的每一个元素, 如此一来就造成了循环调用
解决方法:
重写toString 不打印parent或者children即可