初始化枚举类型时遇到问题

时间:2015-10-30 07:05:19

标签: java

我在初始化一周的基本enum天时遇到了问题。这是我的代码:

public class Ch3_12 
{   
    public static void main(String[] args) 
    {
        public enum Day {MON, TUE, WED, THU, FRI, SAT, SUN}

    }
}

4 个答案:

答案 0 :(得分:4)

您无法在方法中定义枚举。

枚举是静态嵌套类,因为它们定义静态成员变量(枚举值),内部类不允许这样做。

答案 1 :(得分:4)

阅读编译器提供给您的错误消息:

public static void main(String[] args)
{
    public enum Day {MON, TUE, WED, THU, FRI, SAT, SUN}
    ^^^^^^ Modifier "public" not allowed here
}

...所以你删除了修饰符:

public static void main(String[] args)
{
    enum Day {MON, TUE, WED, THU, FRI, SAT, SUN}
    ^^^^^^^^ enum must not be local
}

...所以你将它移出方法范围:

enum Day {MON, TUE, WED, THU, FRI, SAT, SUN}

public static void main(String[] args)
{
    // no more compiler errors...
}

答案 2 :(得分:1)

Java中的成员枚举必须在顶级类,接口或静态上下文中定义 。例如:

//nested within a class
class TopLevel {
    enum MyEnum { }
}

//nested within an interface
interface Interface {
    enum MyEnum { }
}

请注意,在这两种情况下,默认情况下MyEnum隐式static

附注:与枚举不同,您可以在方法中嵌套类,这些类称为本地类。这实际上只适用于类,但不适用于接口和枚举:

public static void main(String[] args) {
    class NestedMethodClass {

    }
}

答案 3 :(得分:0)

  

成员枚举日只能在顶级类或接口

中定义

您可以在main()之前初始化它。