我遇到了以下错误的问题:
令牌";"上的语法错误,{应在此令牌后出现
语法错误,插入"}"以完成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枚举是成熟的类,它们允许您编写方法、实现接口等。但肯定不会编写这样的代码:)
您可以在此处阅读有关枚举的更多信息