Im создает лексический/синтаксический анализатор для класса. Проблема, с которой я сталкиваюсь, - это когда я пытаюсь получить доступ к моей статической переменной «lexems» или «tokens» из метода, кроме основного, они являются NULL. Когда я использую их в основном (например, метод 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++;
}
}
Вы могли бы также хочу указать, что статические поля * не * null, они пусты из-за скрытия/переопределения. Большая разница. – Andreas
Термин _shadowing_. –