2008-09-18 5 views
9

Кто-нибудь знает библиотеку Java, которая сериализует иерархию объектов Java в Java-код, который генерирует эту иерархию объектов? Подобно сериализации объектов/XML, только формат вывода не является двоичным/XML, а кодом Java.Сериализация объектов Java в Java-код

ответ

1

Мне неизвестны какие-либо библиотеки, которые будут делать это из коробки, но вы должны иметь возможность взять один из многих объектов для XML-сериализационных библиотек и настроить бэкэнд-код для генерации Java. Вероятно, не будет много кода.

Например, быстрый google появился XStream. Я никогда не использовал его, но, похоже, поддерживает несколько бэкендов, отличных от XML. JSON. Вы можете реализовать свой собственный сценарий и просто написать код Java, необходимый для воссоздания иерархии.

Я уверен, что вы можете сделать то же самое с другими библиотеками, в частности, если вы можете подключиться к потоку событий SAX.

См: HierarchicalStreamWriter

+0

Или примените преобразование XSL к любым выводам XStream и, таким образом, сгенерируйте java. в зависимости от того, что вам больше нравится. – entzik 2008-09-18 11:11:15

0

XStream - это библиотека сериализации, которую я использовал для сериализации в XML. Это должно быть возможно и довольно легко расширить его, чтобы он записывал Java-код.

3

Сериализованные данные представляют внутренние данные объектов. Недостаточно информации, чтобы определить, какие методы вам потребуются, чтобы вызвать объекты для воспроизведения внутреннего состояния.

Есть два очевидных подхода:

  • закодировать сериализованные данные в буквальной строке и deserialise что.
  • Использование java.beans Сохранение XML-данных, которое должно быть достаточно простым для обработки с помощью вашей любимой технологии XML-> Java.
+1

Объекты java beans, поэтому для всех полей есть геттеры и сеттеры. Я не забочусь о десериализации, я просто хочу предоставить способ помочь нашим разработчикам в написании насмешливого кода :) – user17456 2008-09-18 09:49:12

1

Большой вопрос. Я думал о сериализации объектов в Java-коде, чтобы упростить тестирование. Вариант использования - загрузить некоторые данные в db, затем сгенерировать код, создающий объект, а затем использовать этот код в методах тестирования для инициализации данных без необходимости доступа к БД.

Как-то верно, что состояние объекта не содержит достаточной информации, чтобы знать, как оно было создано и преобразовано, однако для простых java beans нет причин, почему это не должно быть возможным.

Вам нравится писать небольшую библиотеку для этой цели? Я скоро начну кодирование!

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