Я создал
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);
Причина в том, что я использую enum , чтобы ограничить тип ограничения, которое можно использовать, и могу присвоить значение этому ограничению .
Однако моя реальная мотивация - использовать это ограничение в аннотации @.
@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.
Есть ли способ выполнить то, что я хочу достичь