我正在eclipse中进行一些调试,我发现我的变量出现了两次,第二次出现为null:
(我应该说类名是AbstractSyntaxTree,因为它构建了一个AST - 不是因为它被声明为abstract - 尽管它确实从一个抽象类继承...)
谁能告诉我可能是什么原因造成的?它是关于调试器还是关于我的代码的东西?
编辑:让我们来看看代码......
public class AbstractSyntaxTreeBuilder extends AbstractSyntaxTreeSuperclass {
protected GLLHashPool parser;
protected String input;
protected TreeNode root;
protected ArtTextHandler handler;
public AbstractSyntaxTreeBuilder(String sourceString) {
super(sourceString);
}
...
..和超类:
public abstract class AbstractSyntaxTreeSuperclass {
protected GLLHashPool parser;
protected String input;
protected TreeNode root;
protected ArtTextHandler handler;
public AbstractSyntaxTreeSuperclass(String sourceString) {
super();
handler = new ArtTextHandler();
Text text = new Text(handler);
parser = new ArtGrammarParser(text);
input = sourceString;
....
答案 0 :(得分:4)
从AbstractSyntaxTreeBuilder中删除以下内容:
protected GLLHashPool parser;
protected String input;
protected TreeNode root;
protected ArtTextHandler handler;
它们在超类(AbstractSyntaxTreeSuperclass)中声明为受保护,因此子类(AbstractSyntaxTreeBuilder)可以访问它们。