gpt4 book ai didi

java - 静态变量在 main 方法之外出现 null

转载 作者:行者123 更新时间:2023-12-01 06:50:23 25 4
gpt4 key购买 nike

我正在为类构建一个词法/句法分析器。我遇到的问题是,当我尝试从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com