Java eclipse调试器中的重复值
我正在eclipse中进行一些调试,发现变量出现了两次,第二次出现为null: (我应该说类名是AbstractSyntaxTree,因为它构建了一个AST——不是因为它被声明为抽象的——尽管它确实继承了抽象类的形式……) 谁能告诉我是什么原因造成的?是关于调试器还是关于我的代码 编辑:让我们看看代码Java eclipse调试器中的重复值,java,eclipse,Java,Eclipse,我正在eclipse中进行一些调试,发现变量出现了两次,第二次出现为null: (我应该说类名是AbstractSyntaxTree,因为它构建了一个AST——不是因为它被声明为抽象的——尽管它确实继承了抽象类的形式……) 谁能告诉我是什么原因造成的?是关于调试器还是关于我的代码 编辑:让我们看看代码 public class AbstractSyntaxTreeBuilder extends AbstractSyntaxTreeSuperclass { protected GLLHash
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;
....
从AbstractSyntaxTreeBuilder中删除以下内容:
protected GLLHashPool parser;
protected String input;
protected TreeNode root;
protected ArtTextHandler handler;
它们在超类(AbstractSyntaxTreeSuperclass)中声明为受保护,因此子类(AbstractSyntaxTreeBuilder)可以访问它们。如果没有看到您的代码示例,很难排除您的代码。您的类可能正在重新定义并在超类中隐藏同名变量。因此,类中的变量有一个值(因为您设置了它们),而超类中的变量没有设置(空值)。changeStack有重复的变量吗?@OliCharlesworth-fair-已经添加了…所以现在很明显,您有重复的成员变量。