代码之家  ›  专栏  ›  技术社区  ›  coder

如何创建具有Java中连字符符号的值的静态枚举?

  •  8
  • coder  · 技术社区  · 16 年前

    如何创建如下静态枚举

    static enum Test{
        employee-id,
        employeeCode
    }
    

    到现在为止,我犯了错误。

    4 回复  |  直到 7 年前
        1
  •  17
  •   Daniel Rikowski    15 年前

    这是不可能的Java,因为每个项目必须是一个有效的标识符(和有效的Java标识符可能不包含破折号)。

    最接近的方法是向每个枚举值添加自定义属性或重写 toString 方法,以便您可以执行以下操作:

    Test.EMPLOYEE_ID.getRealName() //Returns "employee-id"
    
    public enum Test
        EMPLOYEE_ID("employee-id");
    
        private Test(String realName) {
            this.realName = realName;
        }
        public String getRealName() {
            return realName;
        }
        private final String realName;
    }
    
        2
  •  15
  •   BalusC    7 年前

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

    为了说明这个问题:

    int num-ber = 5;
    int num = 4;
    int ber = 3;
    
    System.out.println(num-ber);
    

    你认为这里会发生什么?

        3
  •  1
  •   polygenelubricants    16 年前

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

        4
  •  0
  •   Fazal    16 年前

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