Docs 菜单

Docs 主页开发应用程序Atlas Device SDKs

注解类型 RealmModule

在此页面上

  • io.realm.annotations
  • RealmModules 和库
  • 可选元素摘要
  • 元素详细信息

实现的接口:

默认情况下,Realm 可以存储项目中扩展 RealmObject 的所有类。 但是,如果您希望将 Realm 限制为仅包含类的子集,或者希望在库项目和应用程序项目之间共享这些类,则必须使用 RealmModule。RealmModule 是扩展 RealmObject 的类的集合,可与其他 RealmModule 来为 Realm 创建模式。 这样可以更轻松地控制这些 Realm 的版本控制和迁移。

RealmModule 可以是库模块,也可以是应用模块。 通过设置 library = true来进行区分。 设置library = true通常只与库作者相关。 有关详细信息,请参阅下文。

目前,单个文件中无法包含多个 RealmModule 声明。 如果您有多个 RealmModule,则必须为每个模块使用单独的 Java 文件。

Realm 默认行为是自动创建一个名为DefaultRealmModule的 RealmModule,其中包含扩展项目中 RealmObject 的所有类。Realm 会自动识别此模块。

当组合使用 Realm 的库项目和应用项目时,这种行为会出现问题。 这是因为将为库项目和应用项目创建DefaultRealmModule ,这将导致项目失败并出现重复的类定义错误。

库作者有责任使用设置了library = true的显式模块来避免这种冲突。 这会禁用为库项目生成 DefaultRealmModule,并允许将该库包含在也使用 Realm 的应用项目中。 这意味着在内部使用 Realm 的库项目需要使用RealmConfiguration.modules()指定特定模块。

应用开发者无需指定任何模块,因为他们隐式使用DefaultRealmModule ,但他们现在可以选择使用RealmConfiguration.addModule()将库项目类添加到其模式中。

提示

另请参阅:

修饰符和类型
可选元素和描述
公共布尔值
无需手动将所有 Realm 类添加到模块中,只需将此布尔值设置为 true,即可自动包含此项目中的所有 Realm 类。
命名策略适用于该模块的所有类部分。
公共
指定应该属于此模块一部分的扩展 RealmObject 的类。
命名策略适用于该模块的所有类部分中的所有字段名称。
公共布尔值
将其设置为 true 会将该模块标记为库模块。
allClasses

public boolean allClasses

无需手动将所有 Realm 类添加到模块中,只需将此布尔值设置为 true,即可自动包含此项目中的所有 Realm 类。 这不包括其他库中必须使用自己的模块公开的类。 同时设置allClasses = trueclasses()将导致注解处理器抛出异常。

默认: false

classNamingPolicy

public RealmNamingPolicy classNamingPolicy

命名策略适用于该模块的所有类部分。默认策略为RealmNamingPolicy.NO_POLICY 。要为类中的所有字段定义命名策略,请使用fieldNamingPolicy()

可以使用RealmClass注解覆盖每个类中模块中指定的命名策略。

如果一个类是多个模块的一部分,则必须对这两个模块应用相同的命名策略,否则会引发错误。

默认: io.realm.annotations.RealmNamingPolicy.NO_POLICY

public Class classes

指定应该属于此模块一部分的扩展 RealmObject 的类。 只能包含此项目中的类。 其他库中的类必须使用自己的模块公开。 同时设置allClasses = trueclasses()将导致注解处理器抛出异常。

默认: {}

fieldNamingPolicy

public RealmNamingPolicy fieldNamingPolicy

命名策略适用于该模块的所有类部分中的所有字段名称。默认策略为RealmNamingPolicy.NO_POLICY 。要定义类名的命名策略,请使用classNamingPolicy()

可以使用RealmClass.fieldNamingPolicy()RealmField.name()覆盖此命名策略。

默认: io.realm.annotations.RealmNamingPolicy.NO_POLICY

public boolean library

将其设置为 true 会将该模块标记为库模块。 这将阻止 Realm 生成包含所有类的DefaultRealmModule 。 这是库所要求的,这样它们就不会干扰在应用代码中运行的 Realm,但这也意味着使用 Realm 的所有库都必须显式使用模块,并且不能依赖于存在的默认模块。 不允许在同一项目中创建库模块和普通模块,否则会导致注解处理器抛出异常。

默认: false

← 注解类型 RealmField