Использовать класс для констант редко.В большинстве случаев используется интерфейс.Это будет доступно по ActionConstants.VALIDFIRSTLASTNAME
:
public interface ActionConstants {
static final String VALIDFIRSTLASTNAME = "[A-Za-z0-9.\\s]+";
static final String VALIDPHONENUMBER = "\\d{10}";
...
}
Начиная с Java 5 вы также можете использовать enum.Перечисление может иметь члены или расширенную функциональность.
Во втором примере используется простой член (здесь с универсальным подходом, если у вас разные типы констант, иначе вы также можете использовать String
член):
public enum ActionConstants {
FIRSTLASTNAME("[A-Za-z0-9.\\s]+"),
PHONENUMBER("\\d{10}");
private final Object value;
private ActionConstants(Object value) {
this.value= value;
}
@SuppressWarnings("unchecked")
public <T> T getValue() {
return (T)value;
}
}
String value = ActionConstants.FIRSTLASTNAME.getValue();
В последнем примере используются расширенные функциональные возможности, когда все константы имеют одинаковый тип.Вы можете использовать его как ActionConstants.PHONENUMBER.isValid("0800123456")
:
public enum ActionConstants {
FIRSTLASTNAME("[A-Za-z0-9.\\s]+"),
PHONENUMBER("\\d{10}");
private final Pattern pattern;
private ActionConstants(String pattern) {
this.pattern = Pattern.compile(pattern);
}
public void isValid(String value) {
return pattern.matcher(value).matches();
}
}
Обе версии позволяют использовать статический импорт.