У меня есть объект с целочисленными атрибутами, который выглядит следующим образом в прото-коде :
class MyEntity:
String name
@Choices({1, "BSD", 2, "Apache", 3, "GPL"}
Integer frequency
@ChoicesSegment({1000, 2000, 3000}, {"BSD", "Apache", "GPL"})
Integer type
String getFrequency()
return getChoice("frequency", frequency)
String getType()
return getChoice("type", type)
возможно, это решение более выполнимо:
class MyEntity:
String name
final static private Something? frequencyChoices = {1000, 2000, 3000}, {"BSD", "Apache", "GPL"}
Integer frequency
final static private String[] typeChoices = new String[] {"BSD", "Apache", "GPL"}
Integer type
@Choices(MyEntity.frequencyChoices)
String getFrequency()
return frequency)
@IntervalChoices(MyEntity.typeChoices)
String getType()
return type
* get ** методы доступа возвращают строки в соответствии с этой таблицей.
value(type) HumanReadableString(type)
1 BSD
2 Apache
3 GPL
min frequency max frequency HumanReadableString(frequency)
0 1000 rare
1000 2000 frequent
2001 3000 sexy
Должна быть возможность получить все возможные значения, которые может принимать атрибут, например:
getChoices(MyEntity, "type") returns ("rare", "frequent", "sexy")
Должно быть возможно получить связанное значение из строки:
getValue(MyEntity, "frequency", "sexy") returns (2000,3000)
edit : цель всего этого Эти методы должны упростить генерацию форм и запросов (конечно, это не должно ограничиваться реализацией)
edit : добавлено, как я хотел бы сказать Java, что некоторые атрибуты являются специальными, чтобы он мог генерировать методы доступа get *.
edit : добавлено, как отправить в код варианты
edit : единственное, что я храню в БД, это целые числа, когда я хочу напечатать их, их нужно как-то преобразовать в их читаемую человеком строку.