可能重复:
Java:本地枚举
为什么我们不能在 java 中的特定方法中定义枚举?如果我有一个场景,我将在一个方法中使用这些枚举值,而不是在任何其他地方。在方法中声明而不是在全局范围内定义它不是很好吗?我的意思是公开或默认。
您不能如JavaDocs所述在方法级别进行定义。(我希望看到一种允许这样做的语言)
嵌套枚举类型是隐式静态的。可以将嵌套枚举类型显式声明为静态。
这意味着不可能定义本地(第 14.3 节)枚举,或在内部类(第 8.1.3 节)中定义枚举。
你可以做什么它在类级别声明它并在方法级别声明一个变量:
public class Light {
...
private LightSwitch position;
private enum LightSwitch {
On,
Off
}
public void SwitchOn() {
Switch(LightSwitch.On);
}
public void SwitchOff() {
Switch(LightSwitch.Off);
}
private void Switch(LightSwitch pos) {
position = pos;
}
}
来自JLS
嵌套枚举类型是隐式静态的。可以将嵌套枚举类型显式声明为静态。
这意味着不可能定义本地(第 14.3 节)枚举,或在内部类(第 8.1.3 节)中定义枚举。
而且,它们通常是隐含的最终结果。将枚举作为类的一部分是一般模式,因为它们通常表现为常量。
枚举类型是隐式最终的,除非它包含至少一个具有类主体的枚举常量。
你不能在方法中定义枚举,但你可以定义类,所以如果你真的希望以这种方式设计你的方法,你可以定义一个本地类对象的数组。
public void doSomething() {
class Country {
int population = 0;
String name = null;
public Country(int population, String name) {
this.population = population;
this.name = name;
}
}
Country[] countries = { new Country(85029304, "Germany"), new Country(61492053, "Spain") };
// do stuff with countries
}