为什么只在顶级课程或界面上枚举?

Cin*_*don 5 java enums

我正在学习Java并编写了一个非常简单的程序.在其中我可以将枚举放在最顶层,但不在方法内.我看到它的方式,枚举几乎就像常量,所以为什么不在方法中使用它们呢?

在我的程序中,允许使用enum1,但不允许使用enum2.为什么?

enum enum1 {A, B, C};

public static void main(String[] args)
{
    enum enum2 {A, B, C};  // only on a top level class or interface
}
Run Code Online (Sandbox Code Playgroud)

Bre*_*ken 5

因为枚举是一种特殊类的类定义.

文档描述了有关编译器所做的特殊事情的一些信息,包括添加静态方法(valueOf).虽然您可以使用方法的上下文声明一个匿名类,但它不能有静态方法.