是否可以使用int标识符定义枚举?

时间:2013-10-30 13:01:28

标签: java

我的问题是“是否可以在枚举中使用int标识符?” 我正在开发一个java程序,我需要有包含数字和字母的标识符,但是eclips不接受它。

为exapmle public enum Tag {  5F25,  4F,  。  。  。 }

有谁知道是否有办法解决这个问题! 谢谢

3 个答案:

答案 0 :(得分:4)

你正试图改变编程的规律和惯例。我建议你采取不同的方法。

枚举可以有构造函数。它们通常是私有的,因为枚举的“实例”是在它内部创建的。您可以提供您想要的任何信息(例如ID,姓名,关键字等)。

在这个例子中,我在构造函数中只使用一个参数实现了枚举,这是您需要的唯一ID。

public enum Tag
{
    TAG_1(1),
    TAG_2(2),
    TAG_3(3);

    private final int id;

    private Tag(final int id)
    {
         this.id = id;
    }

    public int id() // Objective C style. Can be getId()
    {
         return id;
    }

    /**
     * Bonus method: get a Tag for a specific ID.
     *
     * e.g. Tag tagWithId2 = Tag.getTagForId(2);
     */
    public static Tag getTagForId(final int id)
    {
         for (final Tag tag : values())
              if (tag.id == id)
                   return tag;
         return null;
    }
}

答案 1 :(得分:0)

总之,编号Java枚举基本上是类型安全枚举模式的语法糖。这意味着枚举是一个java标识符列表:它们的名称必须遵循标识符的所有规则。其中一条规则是标识符名称不能以数字开头。

答案 2 :(得分:0)

Enum实例必须遵循与其他标识符相同的java语言命名限制 - 它们不能以数字开头。

如果您的名字中必须有十六进制,请在其前面添加一个字母/单词,例如enum类本身:

public enum Tag {
   Tag5F25,
   Tag4F,
   ...
}

或者可能使用下划线和全部上限:

public enum Tag {
   TAG_5F25,
   TAG_4F,
   ...
}