java - Enum 中的空静态方法

标签 java android enums

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

代码:

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

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

  }
}

最佳答案

这是对静态初始化器的疯狂使用,您应该真正避免这种情况。其一,这肯定会抛出 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.

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

此外,数组的创建完全没有意义。您可以使用 enumvalues() 方法直接获取枚举常量数组。

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();
}

您可以了解更多关于enum types here.的信息

关于java - Enum 中的空静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19357352/

相关文章:

android - 以编程方式创建图标以用作 ItemizedOverlay 可绘制对象 - Android

没有内容提供者的 Android 同步

c - 为什么标准规定 C 中的结构、枚举和 union 标签有三种可能的 namespace ,而实际上只有一种?

c++ - Libtorrent 设置枚举

c - C中文本查找的通用枚举

java - 更新 Java EE 7 CDI 应用程序中注入(inject)的域对象

java - Volley Change 响应超时 - 不要设置重复

java - "An unknown server-side error"当尝试启动真正的 Android 手机的 Android 应用程序时

java - 如何使用 FileReader 类打印我正在编写的程序

java - 扫描仪给出相同的值 2x 而不是 1