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

Java 是否可以使用int标识符定义枚举?,java,Java,我的问题是“在枚举中是否可能有int标识符?” 我正在开发一个java程序,我需要有包含数字和字母的标识符,但eclips不接受 例如 公共枚举标记{ 5F25, 4F, . . . } 有人知道有没有办法解决这个问题吗! 谢谢你你试图改变编程的规则和惯例。我建议你采取不同的方法 枚举可以有构造函数。它们通常是私有的,因为枚举的“实例”是在其中创建的。您可以提供您想要的任何信息(例如id、姓名、关键字等) 在本例中,我只在构造函数中使用一个参数实现了enum,这是您需要的唯一ID public

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

例如 公共枚举标记{ 5F25, 4F, . . . }

有人知道有没有办法解决这个问题吗!
谢谢你

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

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

在本例中,我只在构造函数中使用一个参数实现了enum,这是您需要的唯一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;
    }
}

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

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

如果名称中必须包含十六进制,请在它们前面加上字母/单词,例如enum类本身:

public enum Tag {
   Tag5F25,
   Tag4F,
   ...
}
或者用下划线和所有大写字母:

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

etc

您的问题是“一个以整数开头的标识符”,正如您在@GGrecs答案中所看到的,在其他地方有一个整数不是问题。是的,您是对的。谢谢你+1,我从来没有想过
Enum
会有这样的事情发生,这在
C++
中也会发生吗?参见Enum命名约定(大写)@reto在我的头上写下了它,但我同意你的看法。我支持使用下划线作为前缀,所以用法看起来像
标记。_5F25
,没有冗余。但可能需要修改SonarQube正则表达式。