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

时间:2010-05-26 15:57:54

标签: java

从ENUM获取唯一ID的最佳方法是在重复执行程序之间保持一致吗?

目前我通过将ID传递给枚举构造函数来手动执行此操作。我真的不想这样做,我可以帮忙。

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

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

3 个答案:

答案 0 :(得分:3)

这可能太简单了,但是“类名+枚举名称”有什么问题?

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

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

答案 1 :(得分:1)

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

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传递给构造函数时,这就是你的意思,如果是,请解释为什么这对你没用。

答案 2 :(得分:0)

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