2012-01-25 5 views
0

У меня есть немаршаллированный Java-объект из XML. Части этого немаршаллированного объекта отправляются в различные классы для обработки. Мне нужно зарегистрировать содержимое объекта без маршаллинга. Я могу легко переопределить метод toString(), но проблема в том, что в этом случае классы генерируются во время сборки с помощью xjc, и я не могу переопределить toString() в этих классах, поскольку они будут удалены при генерации снова.Альтернатива для toString() в java

Я ищу другую альтернативу для печати содержимого. Есть идеи ?

+2

Если вы можете легко переопределить toString(), то почему? Вы ищете сложное/сложное решение? –

+2

Что делает 'toString()' делать то, что вы хотите сделать? – cheeken

+0

Проблема в том, что в этом случае классы генерируются во время сборки с помощью xjc, и я не могу переопределить toString() в этих классах, поскольку они будут удалены при генерации снова. – Gaurav

ответ

2

Вы можете использовать плагин xjc для генерации нужной строки toString.

+0

Я думаю, что может работать .. нашел это http://cxf.apache.org/cxf-xjc-ts.html – Gaurav

0

Вы можете написать класс утилиты, который использует отражение для проверки объекта и либо возвращает строковое представление (в любом формате), либо напрямую записывает строковое представление.

+0

Я подумал над этим решением. Возможно, я мог бы использовать некоторую библиотеку, такую ​​как xstream, для входа в xml-формат. Мы просто искали любое другое решение. – Gaurav

1

Не используйте toString() для сортировки. Это не то, для чего он предназначен. (Обратитесь к Javadocs для java.lang.Object для руководства к тому, что метод является предназначен.)

Даже если вы решили осуществить сортировочный/демаршаллинг вручную, вы не должны пытаться использовать toString() для этой цели.

0

Напишите класс-помощник, который берет объект Unmarshalled Java Object и дает вам строковое представление, используя отражение, если вы не хотите использовать отражение, так как вы знаете свое xsd и немаршаллированное содержимое, вы можете их жестко закодировать.

Смежные вопросы