为@Annotation赋值
2022-09-03 04:42:13
我创建了
enum Restrictions{
none,
enumeration,
fractionDigits,
length,
maxExclusive,
maxInclusive,
maxLength,
minExclusive,
minInclusive,
minLength,
pattern,
totalDigits,
whiteSpace;
public Restrictions setValue(int value){
this.value = value;
return this;
}
public int value;
}
这样我就可以愉快地做这样的事情,这是完全合法的语法。
Restrictions r1 =
Restrictions.maxLength.setValue(64);
原因是,我正在使用枚举来限制可以使用的限制类型,并能够为该限制分配一个值。
但是,我的实际动机是在@annotation中使用该限制。
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
public @interface Presentable {
Restrictions[] restrictions() default Restrictions.none;
}
因此,我打算这样做:
@Presentable(restrictions=Restrictions.maxLength.setValue(64))
public String userName;
对此,编译器吱吱作响
The value for annotation enum attribute must be an enum constant expression.
有没有办法完成我想完成的事情