如何在 Java 中创建一个带有连字符的值的静态枚举?

发布于 2024-08-25 22:24:14 字数 121 浏览 5 评论 0原文

如何创建如下所示的静态枚举

static enum Test{
    employee-id,
    employeeCode
}

到目前为止,我收到错误。

how to create the static enum like below

static enum Test{
    employee-id,
    employeeCode
}

As of now, I am getting errors.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

寻梦旅人 2024-09-01 22:24:14

这对于 Java 来说是不可能的,因为每个项目都必须是有效的标识符(并且有效的 Java 标识符可能不包含破折号)。

最接近的事情是将自定义属性添加到每个枚举值或覆盖 toString 方法,因此您可以执行以下操作:

Test.EMPLOYEE_ID.getRealName();    // Returns "employee-id"
Test.EMPLOYEE_CODE.getRealName();  // Returns "employeeCode"

public enum Test
    EMPLOYEE_ID("employee-id"),
    EMPLOYEE_CODE("employeeCode");

    private Test(String realName) {
        this.realName = realName;
    }
    public String getRealName() {
        return realName;
    }
    private final String realName;
}

This is not possible with Java, because each item has to be a valid identifier (and valid Java identifiers may not contain dashes).

The closest thing would be adding a custom property to each enum value or override the toString method, so you can do the following:

Test.EMPLOYEE_ID.getRealName();    // Returns "employee-id"
Test.EMPLOYEE_CODE.getRealName();  // Returns "employeeCode"

public enum Test
    EMPLOYEE_ID("employee-id"),
    EMPLOYEE_CODE("employeeCode");

    private Test(String realName) {
        this.realName = realName;
    }
    public String getRealName() {
        return realName;
    }
    private final String realName;
}
月竹挽风 2024-09-01 22:24:14

这不是特定于枚举的。这适用于 Java 中的所有标识符:类名、方法名、变量名等。根本不允许使用连字符。您可以在 Java 中找到所有有效字符语言规范,第 3.8 章“标识符”

为了说明问题:

int num-ber = 5;
int num = 4;
int ber = 3;

System.out.println(num-ber);

您期望这里发生什么?

This is not specific to enums. This applies to all identifiers in Java: class names, method names, variable names, etcetera. Hyphens are simply not allowed. You can find all valid characters in Java Language Specification, chapter 3.8 "Identifiers".

To illustrate the problem:

int num-ber = 5;
int num = 4;
int ber = 3;

System.out.println(num-ber);

What would you expect to happen here?

佼人 2024-09-01 22:24:14

你不能这样做。枚举常量必须是合法的 Java 标识符。合法的 Java 标识符不能包含 -。如果 _ 是可接受的替代品,您可以使用它。

You can not do this. Enum constants must be legal Java identifiers. Legal Java identifiers can not contain -. You can use _ if that's an acceptable substitute.

油焖大侠 2024-09-01 22:24:14

不能使用连字符声明枚举常量。
如果要检索连字符作为枚举的值,则应该在枚举中有一个 value 方法,您可以在其 toString 方法中使用该方法,也可以在枚举上访问此方法以获取连字符值

You cannot declare the enum constant with a hyphen.
If you hyphen to be retrieved as the value of the enum, you should have a value method in enum which you either use in its toString method or access this method on the enum to get the hyphen value

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文