Я не уверен, что понимаю ваш подход, для меня это звучит довольно расплывчато.
Я бы пошел с подходом, основанным на аннотациях. Различные классы проверок с конкретными параметрами могут быть определены в перечислении, а затем связаны с конкретными свойствами с помощью аннотаций.
public enum Validation {
NUMERIC,
TWO_DECIMAL_PLACES,
...;
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface MyAnnotation {
...
Validation[] validation() default { };
...
}
...
@MyAnnotation(
...
validation = { Validation.NUMERIC, Validation.TWO_DECIMAL_PLACES })
public BigDecimal getCharge() {
return Charge;
}
Во время выполнения аннотации могут обрабатываться с помощью внутреннего анализа бобов с PropertyDescriptor
и Method.getAnnotation()
.
Недавно я реализовал простую версию этого в нашем собственном проекте, но есть несколько надежных примеров (возможно, с другой реализацией), например, в спящем и весеннем.