代码之家  ›  专栏  ›  技术社区  ›  Łukasz Bownik

db4o如何实例化对象?

  •  5
  • Łukasz Bownik  · 技术社区  · 16 年前

    db4o使用什么机制来实例化存储对象?

    我的类是不可序列化的,并且不提供零参数构造函数,并且唯一的构造函数在其参数为空时抛出NullPointerException。

    尽管如此,db4o仍然可以实例化该类的存储对象(尽管值不正确)。

    如果我能理解这个机制,也许我能追踪到我的bug。

    我会感谢任何链接:]

    2 回复  |  直到 12 年前
        1
  •  1
  •   Goran    16 年前

    db4o是开放源码的,所以您可以看看这个源码。其基本思想是 type handlers 支持对象的序列化和反序列化。有一个 simple example 高级用户需要自定义类型处理程序的提供程序。 Object construction 如果不存在合适的构造函数,则可以使用构造函数或绕过构造函数。可以通过使用配置设置来防止上述构造函数错误,配置设置指示db4o无论如何都要调用构造函数。

    你可以把这个问题贴在db4o上。 forums 从开发人员那里得到更详细的解释。

    戈兰

        2
  •  2
  •   alamar    16 年前

    它使用Sun(或其他JVM)的特殊API来实例化对象,而无需检查访问权限和运行构造函数。

    您遇到的错误很可能是因为没有运行任何构造函数,包括在字段上设置默认值的隐式构造函数。