( Код для Android На самом деле мне нужен код для переносимости между Android и Java SE.)
Я хочу иметь класс "settings" с различными настройками игры, например
public int map_size;
public String server_name;
и т.д.
К данным необходимо обращаться довольно часто (т.е. к элементам, а не к карте ключ-значение) и время от времени де-сериализовывать каким-либо стандартным способом (главным образом для отправки их по сети).
Я хочу иметь возможность
Сериализация и десериализация объекта в XML или JSON без необходимости явной записи кода для каждого члена (но все же с некоторой степенью контроля над форматом).
Определить некоторые (постоянные) метаданные о каждом элементе (значение по умолчанию, имя GUI, идентификатор XML, ...) таким образом, чтобы можно было легко изменять исходный код (я хочу иметь возможность чтобы добавить новое мета-свойство, определите для него значение по умолчанию и не нужно указывать его везде).
1 достижимо с помощью отражения. Я думал, что Java-аннотации для учеников подойдут для 2:
@Setting(id = "server_name", name = "Server title", default = "Server0")
public String server_name;
Но похоже, что (определяемые пользователем) аннотации еще не работают в Android - код, использующий их, приводит к сбою компилятора ...
Какой будет самый простой способ хранения метаданных о настройках (или другой способ приблизиться ко всему этому)?
Сохранить информацию о настройках в каком-нибудь внешнем XML-файле?
Сохранить его в структуре данных Java с содержимым, определенным в коде? Определение данных таким способом как-то кажется очень громоздким, особенно по сравнению с аргументами аннотаций ключевых слов.