它似乎在JLS#9.7.1中定义:
[…] V的类型与T的分配兼容(第5.2节),此外:
- […]
- 如果T是枚举类型,而V是枚举常量。
枚举常量定义为实际的枚举常量(JLS#8.9.1),而不是指向该常量的变量。
底线:如果要使用枚举作为注释的参数,则需要为其指定一个显式
MyEnum.XXXX值。如果要使用变量,则需要选择其他类型(而不是枚举)。
一种可能的解决方法是使用
String或
int,然后可以将其映射到您的枚举-您将失去类型安全性,但可以在运行时轻松地发现错误(=在测试过程中)。

它似乎在JLS#9.7.1中定义:
[…] V的类型与T的分配兼容(第5.2节),此外:
- […]
- 如果T是枚举类型,而V是枚举常量。
枚举常量定义为实际的枚举常量(JLS#8.9.1),而不是指向该常量的变量。
底线:如果要使用枚举作为注释的参数,则需要为其指定一个显式
MyEnum.XXXX值。如果要使用变量,则需要选择其他类型(而不是枚举)。
一种可能的解决方法是使用
String或
int,然后可以将其映射到您的枚举-您将失去类型安全性,但可以在运行时轻松地发现错误(=在测试过程中)。