creéAsignación de una @annotation ENUM un valor
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;
}
Así que felizmente lo que podía hacer algo como esto, lo cual es perfectamente legal sintaxis.
Restrictions r1 =
Restrictions.maxLength.setValue(64);
La razón es, estoy usando enumeración para restringir el tipo de restricción que podría ser utilizado, y ser capaz de asignar un valor a esa restricción.
Sin embargo, mi verdadera motivación es usar esa restricción en una @anotación.
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
public @interface Presentable {
Restrictions[] restrictions() default Restrictions.none;
}
Así que, tenía la intención de hacer esto:
@Presentable(restrictions=Restrictions.maxLength.setValue(64))
public String userName;
la cual, el compilador croaks
The value for annotation enum attribute must be an enum constant expression.
¿Hay una manera de lograr lo que deseo de lograr
Parece que reinventas 'javax.validation' (JSR303). ¿Has considerado usarlo? ¿Has buscado en su API/impls cómo lo hicieron? P.ej. la [implementación de Hibernate] (http://docs.jboss.org/hibernate/stable/validator/reference/en/html/validator-usingvalidator.html). – BalusC
Hibernate no funciona con GAE, ¿o sí? –
que es el validador de hibernación, no hibernate en sí mismo. eso debería funcionar en todas partes. (cualquiera si no lo hace, tampoco lo hará su versión basada en anotaciones) –