0
  • 我找到了一些核心概念的代码,但我需要知道这个枚举类背后的概念。
  • 任何人都可以告诉枚举类和静态方法是如何工作的,以及这个概念的任何合适的例子。

代码:

enum EBtnSts
{
  static
  {
    ePlayBtn = new EBtnSts("ePlayBtn", 1);

    EBtnSts[] arrayOfEBtnSts = new EBtnSts[0];
    arrayOfEBtnSts[0] = ePlayBtn;

  }
}
4

1 回答 1

5

这是对 a 的疯狂使用static initializer,您应该真正避免。一方面,这肯定会引发ArrayIndexOutOfBounds异常。

EBtnSts[] arrayOfEBtnSts = new EBtnSts[0];  // Creates an array of length 0
arrayOfEBtnSts[0] = ePlayBtn;    // You can't access any index of 0 length array.

其次,该代码将 a 实现enum为普通类。避免。该变量ePlayBtn应该是一个枚举常量。enum包含您在构造函数中传递的值的字段中应该有 2 个字段。并且不要像那样调用构造函数。

此外,数组的创建是完全没有意义的。您可以values()使用enum.

更好地enum实现为:

enum EBtnSts {
    E_PLAY_BTN("ePlayBtn", 1);

    private final String value;
    private final int id;

    private EBtnSts(String value, int id) {
        this.value = value;
        this.id = id;
    }

    private final EBtnSts[] VALUES = values();
}

您可以在此处了解有关枚举类型的更多信息。

于 2013-10-14T09:39:58.660 回答