Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为枚举创建唯一ID字段的最佳方法_Java - Fatal编程技术网

Java 为枚举创建唯一ID字段的最佳方法

Java 为枚举创建唯一ID字段的最佳方法,java,Java,从枚举中获取唯一ID的最佳方法是什么,以在重复执行程序之间保持一致 目前,我正在通过将ID传递给枚举构造函数来手动执行此操作。我真的不想这么做,因为我能帮上忙 另一个选项是使用一个静态字段,该字段会为每个枚举值递增。问题是,如果以后我决定移动枚举字段或删除一些,这将导致我的程序出现问题,因为ID将保存到用户首选项中 ID可以是任何基本类型或字符串。可能太简单了,但“类名+枚举名”有什么不对 只需将此方法添加到枚举: public String getID() { return getClas

从枚举中获取唯一ID的最佳方法是什么,以在重复执行程序之间保持一致

目前,我正在通过将ID传递给枚举构造函数来手动执行此操作。我真的不想这么做,因为我能帮上忙

另一个选项是使用一个静态字段,该字段会为每个枚举值递增。问题是,如果以后我决定移动枚举字段或删除一些,这将导致我的程序出现问题,因为ID将保存到用户首选项中


ID可以是任何基本类型或字符串。

可能太简单了,但“类名+枚举名”有什么不对

只需将此方法添加到枚举:

public String getID() {
  return getClass().getName() + "." + name();
}

创建枚举时,可以执行以下操作:

public enum myEnum {
    VAL1("v1"), VAL2("v2");

    private String id;

    private myEnum(String id) { this.id = id };

    public getId() { return id;}
}
或者可以使用每个枚举都具有的name(),返回声明的名称,在本例中为“VAL1”或“VAL2”。
这两种方法都是做你想做的事情的有效方法。当您说您将id传递给构造函数时,这就是您的意思,如果是,请解释为什么这对您没有帮助。

枚举的名称将保持不变。您不应该设置不同的值