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