如何使用Java中带有连字符的值创建静态枚举?

时间:2010-03-22 14:35:39

标签: java enums

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

static enum Test{
    employee-id,
    employeeCode
}

截至目前,我遇到了错误。

4 个答案:

答案 0 :(得分:19)

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;
}

答案 1 :(得分:16)

这不是针对枚举的。这适用于Java中的所有标识符:类名,方法名,变量名等。连字符是根本不允许的。您可以在Java Language Specification, chapter 3.8 "Identifiers"中找到所有有效字符。

说明问题:

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

System.out.println(num-ber);

你期望在这里发生什么?

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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