我试图制作的注释看起来像这样
@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;
我已经意识到这一点似乎是不可能的。有没有理由不允许这样做?以这种方式使用枚举是否被认为是不好的风格?
答案 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;