Как db4o создает объекты? - PullRequest
5 голосов
/ 26 мая 2009

Какой механизм использует db4o для создания экземпляров хранимых объектов?

Мой класс не Serializable и не предоставляет конструктор с нулевым аргументом, и единственный конструктор выдает исключение NullPointerException, когда его аргумент равен нулю.

Несмотря на это, db4o может по-прежнему создавать экземпляры хранимых объектов этого класса (хотя и с неверными значениями).

Если я смогу понять механизм, возможно, я смогу отследить имеющуюся у меня ошибку.

Буду признателен за любые ссылки:]

Ответы [ 2 ]

2 голосов
/ 26 мая 2009

Он использует специальный API sun (или вашего другого jvm) для создания экземпляров объектов без проверки доступа и запуска конструкторов.

Ошибка, с которой вы столкнулись, вероятнее всего связана с тем, что не были запущены конструкторы, включая неявные, которые устанавливают значения по умолчанию для полей.

1 голос
/ 26 мая 2009

Db4o с открытым исходным кодом, так что вы можете взглянуть на источник. Основная идея заключается в использовании обработчиков типа , которые обеспечивают сериализацию и десериализацию объектов. Существует простой пример провайдера для опытных пользователей, требующих обработчик пользовательского типа. Конструкция объекта может использовать конструкторы или обходной конструктор, если подходящего конструктора не существует. Упомянутая ошибка конструктора может быть предотвращена с помощью параметров конфигурации, которые инструктируют db4o в любом случае вызывать конструкторы.

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

Goran

...