2009-05-26 49 views
5

db4o使用什麼機制來實例化存儲對象?db4o如何實例化對象?

我的類不是Serializable,不提供零參數構造函數,唯一的構造函數在參數爲null時拋出NullPointerException。

儘管如此,db4o仍然可以實例化該類的存儲對象(儘管值不正確)。

如果我能理解機制,也許我可以追蹤到我有的錯誤。

我會很高興的任何鏈接:]

回答

1

Db4o是開源的,所以你可以看看源代碼。基本思想是使用type handlers,它可以對對象進行序列化和反序列化。對於需要自定義類型處理程序的高級用戶,有一個simple example提供程序。如果沒有合適的構造函數,Object construction可以使用構造函數或旁路構造函數。通過使用指示db4o調用構造函數的配置設置,可以防止提到的構造函數錯誤。

您不妨張貼在db4o的forums這個問題得到開發商更詳細的解釋。

Goran

2

它使用太陽(或其他JVM的)特殊的API來實例化對象不檢查訪問和運行構造函數。

您遇到的錯誤是最有可能是由於沒有構造已經在運行,其中包括設立上的字段默認值隱含的人的事實。