为什么要使用静态枚举?

use*_*002 2 java enums static

有时我在android中看到使用静态枚举.但我找不到那些信息(我知道C中的枚举)例子,

   public static enum brush{
        static{
          array[0] = brush1;
          array[1] = brush2;
          array[2] = brush3;
          array[3] = brush4;
    }
}
Run Code Online (Sandbox Code Playgroud)

但那是项目中发生的错误.错误消息是"语法错误,插入"标识符"以完成EnumConstantHeader"但我不明白这是什么意思.

Jon*_*eet 10

问题是这是一个没有成员列表的枚举.你通常有:

public enum Foo {
    VALUE1, VALUE2;
}
Run Code Online (Sandbox Code Playgroud)

可以有一个没有成员的枚举,但你仍然需要分号:

public enum Foo {
    ;
}
Run Code Online (Sandbox Code Playgroud)

这现在有效,虽然不是非常有用.

static枚举声明中的部分可能是因为它嵌套在另一个类中.实际上并不需要这样做 - 嵌套enum声明是隐式静态的.

static { ... }只是一个静态初始化,当类型初始化运行.

Java中的枚举与C中的枚举完全不同.您应该阅读有关Java教程enum部分以获取更多详细信息.