Java Enum с XML Beans?

При использовании Apache XML Beans для генерации типов из типов перечисления xsd: XMLBeans генерирует пользовательские классы, не являющиеся перечислениями Java 5. но какой-то особый класс для представления перечисления.

Это может быть так, потому что XMLBeans старше Java 5 и в то время не было перечислений или вы все еще хотите сохранить совместимость с Java 1.4. Однако я хотел бы получить «настоящие» типы перечислений, поэтому у меня вопрос: есть ли способ сгенерировать перечисления Java 5 с помощью Apache XML Beans?

(Jaxb делает это так, как я хочу, но я не уверен, хочу ли я удалить XMLBeans и просто ввести Jaxb за эту деталь.)


person Tim Büthe    schedule 10.02.2011    source источник


Ответы (1)


Я не думаю, что вы можете добиться того, чего хотите, с помощью XML-бинов. Вы даже сами упомянули причину. Я бы порекомендовал вам перейти на JaxB.

Но если вы действительно хотите продолжать использовать XML-бины, я бы посоветовал вам заплатить. Вы можете постобработать сгенерированные классы и преобразовать их в перечисления. Я делал что-то подобное в прошлом, используя задачи ant. Есть задачи-муравьи, которые знают, как выполнять замену строк, так что это не проблема. В худшем случае вы можете реализовать свою задачу на java. Но я считаю, что у вас нет. Я считаю, что это самое простое решение.

Удачи.

person AlexR    schedule 10.02.2011
comment
Спасибо за Ваш ответ. Да, я упомянул причину, по которой они изначально не включили это. Однако я ожидал, что они могли бы добавить какой-нибудь флаг для включения функций Java 5. - person Tim Büthe; 10.02.2011
comment
:( Знаете что? Я подумал еще раз, и теперь я думаю, что, вероятно, даже если этот флаг не существует, вы можете решить проблему. Я не уверен, но обычно генерация кода в проектах Джакарты выполняется с использованием скорости. Если это правильно, проект должен содержать шаблоны скорости для каждого типа класса.Возможно, вы можете изменить шаблон, который имеет дело с перечислениями? - person AlexR; 10.02.2011
comment
Я не знаю, используют ли они скорость, но я мог бы изменить класс в некоторой пост-обработке, выполняя операции поиска-замены. Дело в том, что мне также понадобятся все классы, использующие это перечисление. Я не уверен, стоит ли все это суеты. - person Tim Büthe; 11.02.2011