我正在为类构建一个词法/句法分析器。我遇到的问题是,当我尝试从 main 之外的方法访问静态变量“lexems”或“tokens”时,它们是 NULL。当我在 main 中使用它们(例如 lex.printList 方法)时,它们很好并且充满了数据。
这是怎么回事???
import java.io.IOException;
import java.util.ArrayList;
public class SyntaxAnalyzer {
public static int pos = 0;
public static ArrayList<String> lexems = new ArrayList<String>();
public static ArrayList<String> tokens = new ArrayList<String>();
public static String nextToken;
public static void main(String[] args) throws IOException {
LexicalAnalysis lex = new LexicalAnalysis();
lex.getFile();
lex.parseText();
ArrayList<String> lexems = lex.getLexems();
lex.printList(lexems);
ArrayList<String> tokens = lex.getTokens();
lex.printList(tokens);
//expr();
lex();
}
static void lex(){
//String lexem = lexems.get(pos);
//System.out.println(lexem);
nextToken = tokens.get(pos);
pos++;
}
}
最佳答案
您正在使用本地对象覆盖lexems对象,因此它不是您在主函数内修改的静态变量。
要对静态进行操作,您应该这样做
/*NOTHING HERE!!*/ lexems = lex.getLexems();
lex.printList(lexems);
...
token 也会出现同样的问题
/*NOTHING HERE!!*/ tokens = lex.getTokens();
lex.printList(tokens);
...
关于java - 静态变量在 main 方法之外出现 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33136791/