db4o用于实例化存储对象的机制是什么?
我的类不是Serializable,并且不提供零参数构造函数,并且唯一的构造函数在它的参数为null时抛出NullPointerException。
尽管如此,db4o仍然可以实例化该类的存储对象(尽管值不正确)。
如果我能理解这个机制,也许我可以追踪我所遇到的错误。
我会感谢任何链接:]
答案 0 :(得分:2)
它使用sun(或你的其他jvm)特殊的api来实例化对象,而无需检查访问和运行构造函数。
您遇到的错误很可能是因为没有运行构造函数,包括在字段上设置默认值的隐式构造函数。
答案 1 :(得分:1)
Db4o是开源的,因此您可以查看源代码。基本思想是使用type handlers来启用对象的序列化和反序列化。对于需要自定义类型处理程序的高级用户,有一个simple example提供程序。如果不存在合适的构造函数,Object construction可以使用构造函数或旁路构造函数。使用配置设置可以防止提到的构造函数错误,该配置设置指示db4o无论如何都要调用构造函数。
您可以在db4o forums上发布此问题,以便从开发人员那里获得更详细的解释。
戈兰