有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我无法初始化一周中的基本天数。这是我的代码:

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

    }
}

共 (4) 个答案

  1. # 1 楼答案

    不能在方法内定义枚举

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

  2. # 2 楼答案

    The member enum Day can only be defined inside a top-level class or interface

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

  3. # 3 楼答案

    阅读编译器给出的错误消息:

    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...
    }
    
  4. # 4 楼答案

    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 {
    
        }
    }