Eclipse Debugger正在执行toString()Java方法并增加静态变量

时间:2016-01-18 23:38:54

标签: java eclipse debugging static suffix-tree

我没有找到与此主题相关的问题。

我正在使用后缀树的这种实现:http://en.literateprograms.org/Suffix_tree_%28Java%29

正如您在此链接中所看到的,树的节点具有递归调用自身的toString()方法 - 它显示节点及其子节点的表示。这个方法每次调用时都会增加一个静态整数变量(它是静态的,所以它的值在调用之间保留)。

当我使用Eclipse Debugger暂停执行代码时,我可以将鼠标悬停在节点变量上以查看其值。问题是Eclipse调用toString()方法来显示变量的内容,所以每次检查节点的值时,静态变量都会增加,而程序暂停。

我不知道在调试时如何阻止Eclipse显示toString()方法。此外,我还没有找到一种方法来更改方法,因此它可以在不使用静态变量的情况下以相同的方式工作。这两种解决方案对我有帮助,但第一种解决方案对我来说更有趣。你会做什么?

PS:我添加了SuffixTreeNode的toString()方法的代码。请查看上一个链接了解更多详情。

SuffixTreeEdge incomingEdge = null;
int nodeDepth = -1;
int label = -1;
Collection<SuffixTreeNode> children = null;
SuffixTreeNode parent = null;
int stringDepth;
int id = 0;
public static int c;

public String toString() {
    StringBuilder result = new StringBuilder();
    String incomingLabel = this.isRoot() ? "" : this.incomingEdge.label;
    for (int i = 1; i <= this.nodeDepth; i++)
        result.append("\t");
    if (this.isRoot()) {
        c = 1;
        this.id = 1;
    } else {
        this.id = c;
        result.append(this.parent.id + " -> ");
        result.append(this.id + "[label=\"" + incomingLabel + "\"];\n");
    }
    for (SuffixTreeNode child : children) {
        c++;
        child.id = c;
        result.append(child.toString());
    }
    return result.toString();
}

0 个答案:

没有答案