java annotation枚举数组的默认值

Kla*_*rtl 6 java enums annotations

我想写一个有EnumArray字段的注释.默认值应该是Enum的所有值.此代码有效,但我不想手动指定每个枚举.

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface CommonScope
{
    ECountry[] countries() default {ECountry.AT, ECountry.DE};

}
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

ECountry[] countries() default ECountry.values();
Run Code Online (Sandbox Code Playgroud)

有人能告诉我如何实现这一目标吗?

谢谢

kap*_*pex 7

这是不可能的,注释声明非常有限.您不能调用任何方法或使用属性,您只能使用编译时编译时已知的编译时常量表达式.

作为一种变通方法,您可以添加一个特殊的枚举值,就像Countries.ALL_COUNTRIES对您的应用程序有意义一样.