У нас есть созданная нами аннотация, которая используется для проверки правильности ввода в метод. Примерно так:
@InputValidation(paramName = "foo", regularExpression = RegularExpressionConstants.FOO_REG_EX)
Наш класс RegularExpressionConstants
загружен различными строковыми константами, каждый из которых представляет разные регулярные выражения. Этот класс начинал выглядеть очень грязно, поэтому я начал пытаться привести его в порядок с помощью методов, облегчающих его чтение и т. Д. Итак, теперь класс выглядит так:
public static final String FOO_REG_EX = alphanumericWithRange(1, 16);
public static final String BAR_REG_EX = alphanumericWithRange(2,4);
private static String alphanumericWithRange(int lowerLimit, int upperLimit) {
"[a-zA-Z0-9]{" + lowerLimit + "," + upperLimit + "}";
}
Класс RegularExpressionConstants компилируется, но аннотации больше не компилируются. Ошибка Attribute value must be constant
. Посмотрев на некоторые связанные вопросы по StackOverflow, я понимаю, почему это происходит. Мне в основном интересно, могу ли я как-нибудь добиться аккуратности в классе констант, не вызывая этой проблемы? Или мне просто придется иметь дело со множеством грязных констант?