Java中的Typesafe枚举

bsr*_*bsr 3 java enums annotations

不确定标题是否具有误导性,但要求如下.

我需要使用字符串值作为自定义注释的输入.使用枚举值时,IDE会给出

java属性值必须是常量.

@test("test") // works

@test(Const.myEnum.test.toString()) //java attribute value must be constant
Run Code Online (Sandbox Code Playgroud)

我读到了字符串值不可变的重要性.是否有可能通过枚举(而不是公共静态最终String hack).

谢谢.

Abh*_*kar 6

枚举可用于注释.你应该这样做:

@test(Const.myEnum.test)
Run Code Online (Sandbox Code Playgroud)

假设您已经定义了这样的枚举:

package Const;

public enum myEnum {
    test;
}
Run Code Online (Sandbox Code Playgroud)

和这样的注释:

public @interface test {
    myEnum value();
}
Run Code Online (Sandbox Code Playgroud)