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

如何创建包含未知枚举数组的Java注释?,java,enums,annotations,Java,Enums,Annotations,我要做的注释看起来像这样 @Retention(value = RetentionPolicy.RUNTIME) @Target(value = { ElementType.FIELD }) public @interface EnumParameter { Enum<?>[] disallowedValues() default {}; } 我有一个领域 Direction turnSignal; 我想指出的是,转向灯不能同时具有这两个功能 @EnumParameter

我要做的注释看起来像这样

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

Direction turnSignal;
我想指出的是,转向灯不能同时具有这两个功能

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


我已经意识到,到目前为止,这似乎是不可能的。有没有理由不允许这样做?以这种方式使用enum被认为是不好的风格吗?

是否希望这样做:

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

不可能。枚举值必须在编译时已知。枚举中的值是什么意思?@SotiriosDelimanolis举例来说,我们有一个枚举方向,它枚举左、右、上、下;然后我们要注释一个叫做转向信号的字段。好的,转向信号是一个方向,但它不能表示向上或向下,所以我想在标记中指出。我认为在设置
转向信号的类方法中执行该逻辑会更好。注释用于实现UI组件的过程生成,我不想为所有这样的案件写特别处理,这会让我达到目的,而且这可能是唯一的途径。不幸的是,它需要不必要的冗长,无法在重构中生存,并且容易出现用户输入错误。
@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;