Сериализация Java-объектов в Java-код - PullRequest
9 голосов
/ 18 сентября 2008

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

Ответы [ 4 ]

3 голосов
/ 18 сентября 2008

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

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

  • Кодировать сериализованные данные в буквальную строку и десериализовать это.
  • Используйте постоянство XML java.beans, которое должно быть достаточно простым для обработки с использованием вашей любимой техники XML-> Java source.
1 голос
/ 16 ноября 2009

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

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

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

1 голос
/ 18 сентября 2008

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

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

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

См: HierarchicalStreamWriter

0 голосов
/ 18 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...