我认为您使用枚举的方法不会奏效。我发现,如果我将
STUDENT_ROLE最后一个示例中的字段更改为常量字符串而不是表达式,则编译器错误消失了:
public enum RoleType { ... public static final String STUDENT_ROLE = "STUDENT"; ...}
但是,这意味着枚举值将不会在任何地方使用,因为您将在注释中使用字符串常量。
在我看来,如果您的
RoleType类只包含一堆静态最终String常量,那您会更好。
为了了解为什么您的代码未编译,我看了一下Java语言规范(JLS)。批注的JLS
指出,对于参数类型为 T 且值为 V 的批注,
如果 T 是原始类型或
String,则 V 是常数表达式。
甲常量表达式包括,除其他外,
TypeName 形式的合格名称。 引用常量变量的 标识符
并将常量定义为
基本类型或类型的变量,该变量
String是最终变量,并使用编译时常量表达式进行初始化
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)