Я рассматриваю проект на Java, где мне нужен строковый объект, но с большей «безопасностью типов», чем просто класс String
. Это потому, что у меня есть несколько объектов 'POJO' для Hibernate, представляющих мои таблицы базы данных. Каждый из этих классов имеет большое количество открытых статических полей, представляющих свойства этого класса, т.е.
public class PersistantBean {
public static String PROP_FIELD_COLUMN_ONE="columnOne";
public static String PROP_FIELD_COLUMN_TWO="columnTwo";
// [...]
Эти свойства используются, когда нам нужен общий доступ к свойству, например, для кода, который я сейчас пишу .parseAndSet(PROP_FIELD_PRICE,"£3.00")
.
Я хотел бы иметь возможность добавить более сильный тип в поля PROP_FIELD_...
, чтобы я мог написать
public class PersistantBean {
public static PropertyName PROP_FIELD_COLUMN_ONE="columnOne";
public static PropertyName PROP_FIELD_COLUMN_TWO="columnTwo";
// [...]
с минимальными изменениями в других частях проекта,
чтобы parseAndSet выглядел так:
public void parseAndSet(PropertyName prop, String priceToParse)
По сути, я бы хотел, чтобы PropertyName
был типом, который во всех отношениях похож на String, кроме компилятора, произойдет ошибка, если я попытаюсь поместить String
там, где ожидалось PropertyName
, это любой шаблон проектирования, подобный этому возможный.
(Я уклоняюсь от Enums, хотя сейчас я упоминаю об этом, Enums может быть подходящим вариантом).