【问题标题】:java annotation enum array default valuejava注解枚举数组默认值
【发布时间】: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


【解决方案1】:

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

作为一种解决方法,如果这对您的应用程序有意义,您可以添加一个特殊的枚举值,例如 Countries.ALL_COUNTRIES

【讨论】:

    猜你喜欢
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    相关资源
    最近更新 更多