【发布时间】:2015-03-04 09:24:30
【问题描述】:
我想编写一个具有 EnumArray 字段的注释。默认值应该是枚举的所有值。此代码有效,但我不想手动指定每个枚举。
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface CommonScope
{
ECountry[] countries() default {ECountry.AT, ECountry.DE};
}
我想做这样的事情:
ECountry[] countries() default ECountry.values();
谁能告诉我如何做到这一点?
谢谢
【问题讨论】:
-
你可以使用 EnumSet.allOf(ECountry.class)
-
@KennethClark - 如何 - 我似乎无法做到这一点。没有
EnumSet.allOf(A.class).toArray()。 -
嗯不工作。当我使用 values() 时出现同样的错误 ...Eclipse 告诉我“注释属性 CommonScope.countries 的值必须是枚举常量表达式”
-
你试过
public static ECountry[] COUNTRY = (EStatus[]) EnumSet.allOf(ECountry.class).toArray(); -
这将添加所有值,不确定是否是您所期望的,如果您想要特定值.. 就像只有两个国家,但枚举包含 10,您将不得不添加更多逻辑。
标签: java enums annotations