1

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

令牌“;”上的语法错误,此令牌后应为 {
语法错误,插入“}”以完成 EnumBody

public enum ImpNoise {
  INSTANCE;

   private int p[] = new int[512];


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

   }

}

如您在上面看到的,我将整个班级减少到最低限度。我发现for循环导致了问题。但我真的不明白,它看起来还不错吧?

4

5 回答 5

5

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

public enum ImpNoise {
  INSTANCE;

  private int p[] = new int[512];

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

    }
  }
}

参考:

于 2012-09-10T09:09:10.673 回答
1

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

于 2012-09-10T09:09:18.333 回答
1

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

你可能想要的是

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++) {

       }
   }
}
于 2012-09-10T09:13:08.410 回答
0

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

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

于 2012-09-10T09:13:26.693 回答
0

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

于 2012-09-10T09:10:02.763 回答