Docs Menu
Docs Home
/ /
io.realm.anotaciones

Tipo de anotación RealmModule

Interfaces implementadas:

  • java.lang.annotation.Anotación

De forma predeterminada, un Realm puede almacenar todas las clases que extienden RealmObject en un proyecto. Sin embargo, si desea restringir un Realm para que solo contenga un subconjunto de clases o compartirlas entre un proyecto de biblioteca y un proyecto de aplicación, debe usar un RealmModule. Un RealmModule es una colección de clases que extienden RealmObject y que se puede combinar con otros RealmModules para crear el esquema de un Realm. Esto facilita el control del control de versiones y la migración de esos Realms.

Un RealmModule puede ser un módulo de biblioteca o un módulo de aplicación. La distinción se realiza mediante la configuración library = true La configuración library = true normalmente solo es relevante para los autores de bibliotecas. Consulte más detalles a continuación.

Actualmente, no es posible tener varias declaraciones de RealmModule en un solo archivo. Si tiene más de un RealmModule, deberá usar archivos Java separados para cada módulo.

El comportamiento predeterminado de Realm es crear automáticamente un RealmModule llamado DefaultRealmModule que contiene todas las clases que extienden RealmObject en un proyecto. Realm reconoce automáticamente este módulo.

Este comportamiento es problemático al combinar un proyecto de biblioteca y un proyecto de aplicación que usan Realm. Esto se debe a que se creará el DefaultRealmModule tanto para el proyecto de biblioteca como para el de aplicación, lo que provocará que el proyecto falle con errores de definición de clase duplicada.

Los autores de bibliotecas son responsables de evitar este conflicto mediante el uso de módulos explícitos donde library = true esté definido. Esto deshabilita la generación del DefaultRealmModule para el proyecto de biblioteca y permite que la biblioteca se incluya en el proyecto de aplicación que también usa Realm. Esto significa que los proyectos de biblioteca que usan Realm internamente deben especificar un módulo específico usando RealmConfiguration.modules() .

Los desarrolladores de aplicaciones no necesitan especificar ningún módulo, ya que utilizan implícitamente DefaultRealmModule , pero ahora tienen la opción de agregar las clases del proyecto de biblioteca a su esquema usando RealmConfiguration.addModule() .

Tip

Modificador y Tipo
Elemento opcional y descripción

booleanopúblico

En lugar de agregar manualmente todas las clases de Realm a un módulo, configure este valor booleano como verdadero para incluir automáticamente todas las clases de Realm en este proyecto.

La política de nombres se aplica a todas las clases que forman parte de este módulo.

Especifica las clases que extienden RealmObject que deben ser parte de este módulo.

La política de nomenclatura aplicada a todos los nombres de campos en todas las clases que forman parte de este módulo.

booleanopúblico

Configurar esto como verdadero marcará este módulo como un módulo de librería.

todas las clases

public boolean allClasses

En lugar de agregar manualmente todas las clases de Realm a un módulo, configure este booleano como verdadero para incluir automáticamente todas las clases de Realm en este proyecto. Esto excluye las clases de otras bibliotecas, que deben exponerse mediante su propio módulo. Configurar allClasses = true y classes() provocará que el procesador de anotaciones genere una excepción.

Por defecto: false

Política de nombres de clase

public RealmNamingPolicy classNamingPolicy

La política de nombres se aplica a todas las clases de este módulo. La política predeterminada es RealmNamingPolicy.NO_POLICY. Para definir una política de nombres para todos los campos de las clases, utilice fieldNamingPolicy().

Es posible anular la política de nombres especificada en el módulo en cada clase utilizando la anotación RealmClass.

Si una clase es parte de varios módulos, se debe aplicar la misma política de nombres a ambos módulos; de lo contrario, se generará un error.

Por defecto: io.realm.annotations.RealmNamingPolicy.NO_POLICY

clases

public Class classes

Especifica las clases que extienden RealmObject y que deben formar parte de este módulo. Solo se pueden incluir las clases de este proyecto. Las clases de otras bibliotecas deben exponerse mediante su propio módulo. Si se configuran allClasses = true y classes(), el procesador de anotaciones generará una excepción.

Por defecto: {}

Política de nombres de campos

public RealmNamingPolicy fieldNamingPolicy

La política de nombres se aplica a todos los nombres de campo en todas las clases de este módulo. La política predeterminada es RealmNamingPolicy.NO_POLICY. Para definir una política de nombres para los nombres de clase, utilice classNamingPolicy().

Es posible anular esta política de nombres utilizando RealmClass.fieldNamingPolicy() o RealmField.name().

Por defecto: io.realm.annotations.RealmNamingPolicy.NO_POLICY

Biblioteca

public boolean library

Si se establece como verdadero, este módulo se marcará como módulo de biblioteca. Esto evitará que Realm genere el DefaultRealmModule que contiene todas las clases. Esto es necesario para que las bibliotecas no interfieran con la ejecución de Realm en el código de la aplicación, pero también significa que todas las bibliotecas que usan Realm deben usar un módulo explícitamente y no pueden depender de la presencia del módulo predeterminado. No se permite crear módulos de biblioteca y módulos normales en el mismo proyecto y el procesador de anotaciones generará una excepción.

Por defecto: false

Volver

Campo de reino

En esta página