You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaCC变量修饰符报错:仅允许final修饰变量print的解决咨询

解决JavaCC中变量修饰符报错问题

错误原因

你遇到的Illegal modifier for the variable print; only final is permitted错误,核心是违反了Java语法规则:方法内部的局部变量不能使用private、static这类类成员修饰符,局部变量仅允许可选的final修饰。你把本该放在类成员位置的变量,写到了main方法的循环内部,导致JavaCC生成的Java代码编译报错。

修复方案

把需要在程序运行中修改的变量移到类的成员区域(main方法外部、类内部),根据使用场景调整修饰符:

  • 如果变量需要被static的main方法直接访问,添加static修饰符;
  • 如果不需要类级别的共享,可去掉static,通过类实例访问(注意main是静态方法,需先实例化类)。

修改后的代码示例

public class Parser
{
  // 将变量移到类成员位置,添加static适配main方法的静态上下文
  private static ArrayList nodosCheck = new ArrayList();
  private static ArrayList nodos = new ArrayList();
  private static String raiz;
  private static String print="Todo anda bien";

  public static void main(String args []) throws ParseException
  {
    Parser parser = new Parser(System.in);
    while (true)
    {
      System.out.println("Reading from standard input...");
      System.out.print("Enter a TREE:");
      // 直接修改静态变量
      print = "运行时更新的内容";
      nodos.add("新节点");
      System.out.println("Bienvenidos");
      // ... 后续逻辑
    }
  }
}

额外优化建议

  1. 给ArrayList指定泛型类型,避免原始类型警告,比如ArrayList<String> nodosCheck = new ArrayList<>();
  2. 若不需要类共享变量,可改为实例成员,通过类实例访问:
public class Parser
{
  // 实例成员变量
  private ArrayList nodosCheck = new ArrayList();
  private ArrayList nodos = new ArrayList();
  private String raiz;
  private String print="Todo anda bien";

  public Parser(InputStream in) {
    // 构造方法初始化逻辑
  }

  public static void main(String args []) throws ParseException
  {
    Parser parser = new Parser(System.in);
    while (true)
    {
      System.out.println("Reading from standard input...");
      System.out.print("Enter a TREE:");
      // 通过实例访问变量
      parser.print = "运行时更新的内容";
      parser.nodos.add("新节点");
      System.out.println("Bienvenidos");
      // ... 后续逻辑
    }
  }
}

内容的提问来源于stack exchange,提问作者Malelizarazo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 15:35:35