如何创建包含未知枚举数组的Java注释?

时间:2014-06-23 14:30:14

标签: java enums annotations

我试图制作的注释看起来像这样

@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = { ElementType.FIELD })
public @interface EnumParameter {
    Enum<?>[] disallowedValues() default {};
}

但是,我得到以下错误“注释属性EnumParameter.disallowedValues的无效类型Enum [];只允许原始类型,字符串,类,注释,枚举或其”1维数组“。我打算用它来表示枚举中的某些值对此字段无效。我不知道类型,因为我打算用它来补充UI创建,因此可能会遇到任何类型的枚举。


编辑以澄清。

说我有一个枚举,

enum Direction{
    LEFT, RIGHT, BOTH;
}

我有一个字段,

Direction turnSignal;

我想说明转弯信号不能同时出现。

@EnumParameter(disallowedValues = {Direction.BOTH})
Direction turnSignal;

我已经意识到这一点似乎是不可能的。有没有理由不允许这样做?以这种方式使用枚举是否被认为是不好的风格?

1 个答案:

答案 0 :(得分:1)

这样的事情会起作用吗?

@Target(value = ElementType.FIELD)
@Retention(value = RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    Class<? extends Enum<?>> enumClass(); 
    String[] disallowedValues();
} 

一样使用
@MyAnnotation(enumClass = Direction.class, disallowedValues = {"LEFT", "RIGHT"})
Direction turnSignal;