令牌";"上的语法错误 - 真的很出乎意料



我遇到了以下错误的问题:

令牌";"上的语法错误,{应在此令牌后出现
语法错误,插入"}"以完成EnumBody

public enum ImpNoise {
  INSTANCE;
   private int p[] = new int[512];

   for(int i = 0; i < 256; i++) {
   }
}

正如你在上面看到的,我把全班同学都精简到最低限度。我发现是for循环造成了问题。但我真的不明白,看起来还好吧?

不能只将for语句(或任何其他语句)放在类主体中,放在方法、构造函数或代码块之外。如果您希望代码在创建类时运行,请将其放入构造函数:

public enum ImpNoise {
  INSTANCE;
  private int p[] = new int[512];
  private ImpNoise() {
    for(int i = 0; i < 256; i++) {
    }
  }
}

参考文献:

  • 声明类
  • 为你的班级提供建设者
  • 定义方法

您需要将代码放在代码块中。只有字段的初始化程序才能避免这种情况。

你可能想要的是

public enum ImpNoise {
   INSTANCE;
   private final int[] p = new int[512];
   // either
   {
       for(int i = 0; i < 256; i++) {
       }
   }
   // or
   private ImpNoise() {
       for(int i = 0; i < 256; i++) {
       }
   }
}

循环应该属于一个方法,但它不属于。

您可能希望将for循环放入方法或构造函数中。

Java枚举是成熟的类,它们允许您编写方法、实现接口等。但肯定不会编写这样的代码:)

您可以在此处阅读有关枚举的更多信息

相关内容

最新更新