2009-05-26 16 views
5

Quale meccanismo utilizza db4o per istanziare oggetti memorizzati?In che modo db4o istanzia gli oggetti?

La mia classe non è serializzabile e non fornisce un costruttore di argomenti zero e l'unico costruttore lancia NullPointerException quando l'argomento è nullo.

Nonostante ciò, db4o può ancora creare un'istanza di oggetti memorizzati di quella classe (anche se con valori errati).

Se riesco a capire il meccanismo, forse riesco a rintracciare il bug che ho.

Io apprezzo qualsiasi link:]

risposta

1

Db4o è open source, quindi è possibile dare un'occhiata all'origine. L'idea di base è l'uso di type handlers che abilita la serializzazione e la deserializzazione degli oggetti. Esiste un provider simple example per utenti esperti che richiedono un gestore di tipi personalizzati. Object construction può utilizzare i costruttori o il costruttore di bypass se non esiste un costruttore adatto. Il bug del costruttore menzionato può essere prevenuto usando le impostazioni di configurazione che istruiscono comunque db4o a chiamare costruttori.

È possibile che si desidera postare questa domanda su db4o forums per ottenere una spiegazione più dettagliata dagli sviluppatori.

Goran

2

Esso utilizza (o il vostro altro JVM) API speciale del sole per creare un'istanza di oggetti senza controllare l'accesso e l'esecuzione di costruttori.

Il bug che si sta verificando è molto probabilmente dovuto al fatto che non sono stati eseguiti costruttori, compresi quelli impliciti che impostano valori predefiniti nei campi.

Problemi correlati