我正在爲類構建一個詞法/ syntex分析器。我遇到的問題是當我嘗試從主方法訪問我的靜態變量「lexems」或「令牌」時,他們是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++;
}
}
你可能還要指出,靜態字段是* not * null,因爲隱藏/重寫而爲空。巨大差距。 – Andreas
術語是_shadowing_。 –