Docs Menu
Docs Home
/ /
io.realm.anotaciones

Enum RealmNamingPolicy

java.lang.Object
io.realm.annotations.RealmNamingPolicy

Esta enumeración define las posibles formas en que los nombres de clases y campos se pueden asignar desde lo que se usa en Java al nombre usado internamente en el archivo Realm. Ejemplos donde esto es útil:

  • Para admitir dos clases de modelo con el mismo nombre simple pero en paquetes diferentes.

  • Para facilitar el trabajo con esquemas multiplataforma, ya que las convenciones de nomenclatura son diferentes.

  • Para utilizar un nombre de clase Java que sea más largo que el límite de caracteres 57 impuesto por Realm.

  • Para cambiar un nombre de campo en Java sin forzar a los usuarios de la aplicación a pasar por un proceso de migración.

Dependiendo de dónde se aplique la política, tendrá una semántica ligeramente diferente:

  • Si se aplica RealmModule.classNamingPolicy, todas las clases que forman parte de ese módulo se verán afectadas. Si una clase forma parte de varios módulos, se debe aplicar la misma política de nombres a ambos; de lo contrario, se generará un error.

  • Si se aplica a RealmModule.fieldNamingPolicy, todos los campos persistentes en todas las clases que forman parte de este módulo se verán afectados.

  • Si se aplica a RealmClass.fieldNamingPolicy, todos los campos de esa clase se verán afectados. Esto anulará cualquier política de nombres de campos especificada en un módulo.

Un ejemplo de esto:

@RealmClass(name = "__person", fieldNamingPolicy = RealmNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
public class Person implements RealmModel { // is converted to "__person" internally
public string firstName; // Is converted to "first_name" internally
}

Elegir un nombre interno que sea diferente del nombre utilizado en las clases del modelo Java tiene las siguientes implicaciones:

  • Consultas sobre DynamicRealm Debe usar el nombre interno. Las consultas en instancias normales de Realm deben seguir usando el nombre tal como está definido en la clase Java.

  • Las migraciones deben utilizar el nombre interno al crear clases y campos.

  • Los errores de esquema informados utilizarán los nombres internos.

Al convertir automáticamente nombres de variables de Java, cada nombre se normaliza dividiéndolo en una lista de palabras que luego se unen según las reglas del formato de destino. La siguiente heurística se utiliza para determinar qué constituye una "palabra".

  1. Cada vez que se encuentra un _ o un $. Ejemplos: "_FirstName", "_First_Name" y "$First$Name", que se convierten en "First" y "Name".

  2. Cada vez que cambie de un carácter en minúscula a uno en mayúscula según lo identificado por Character.isUpperCase(int) y Character.isLowerCase(int) . El ejemplo es "FirstName", que se convierte en "First" y "Name".

  3. Cada vez que se cambia de más de un carácter en mayúscula a uno en minúscula, se asume que la última letra en mayúscula forma parte de la siguiente palabra. Esto se identifica mediante Character.isUpperCase(int) y Character.isLowerCase(int). Por ejemplo, "FIRSTName" se convierte en "FIRST" y "Name".

  4. Algunos caracteres, como los emojis, no son mayúsculas ni minúsculas, por lo que formarán parte de la palabra actual. Ejemplos de esto son "my😁" y "MY😁", que se consideran una sola palabra.

  5. Notación húngara, es decir, los nombres de variable que empiezan con "m" minúscula seguida de una letra mayúscula se eliminan y no se consideran parte de ninguna palabra. Por ejemplo, "mFirstName" y "mFIRSTName", que se convierten en "First" y "Name".

Tenga en cuenta que cambiar el nombre interno NO afecta la importación de datos desde JSON. Los datos JSON deben seguir los nombres definidos en la clase Java Realm.

Cuando se trata de analizar JSON utilizando bibliotecas estándar como Moshi, GSON o Jackson, es importante tener en cuenta que estas bibliotecas definen la transformación de JSON a Java, mientras que la configuración de los nombres internos de Realm define la transformación de Java al archivo Realm.

Esto significa que si desea importar datos a Realm desde JSON usando estas bibliotecas, aún deberá proporcionar las anotaciones tanto de la biblioteca del analizador JSON como de Realm.

Usando Moshi, se vería algo así:

public class Person extends RealmObject {
@Json(name = "first_name") // Name used in JSON input.
@RealmField(name = "first_name") // Name used internally in the Realm file.
public string firstName; // name used in Java
}

Tip

Constante de enumeración y descripción

CAMEL_CASE

El nombre en la clase del modelo Java se convierte a camelCase, es decir

IDENTIDAD

El nombre en la clase del modelo Java se utiliza tal cual internamente.

MINÚSCULAS CON GUIONES BAJOS

El nombre en la clase del modelo Java se convierte a minúsculas y cada palabra está separada por _ .

NO_POLICY

No se aplica ninguna política

PASCAL_CASE

El nombre en la clase de modelo de Java se convierte a PascalCase, es decir.

Modificador y Tipo
Método y descripción
  • Métodos heredados de la clase getClasshashCodeequalsclonetoStringnotifynotifyAllwaitwaitwaitjava.lang.Object:,,,,,,,,,, finalize

  • Métodos heredados de la clase java.lang.Enum : name , ordinal , toString , equals , hashCode , clone , compareTo , getDeclaringClass , valueOf , finalize

Política de nombres de reinopública estática final

El nombre en la clase del modelo Java se convierte a camelCase, es decir, todas las palabras se unen, con la primera letra de la primera palabra en minúscula y la primera letra de las palabras subsiguientes en mayúscula. Este es el esquema de nombres estándar en Java, Kotlin, Swift y JavaScript. Ejemplos: "firstName", "FirstName", "mFirstName", "FIRST_NAME", "First$Name" se convierten en "firstName".

Política de nombres de reinopública estática final

El nombre en la clase del modelo Java se utiliza tal cual internamente.

Política de nombres de reinopública estática final

El nombre de la clase del modelo Java se convierte a minúsculas, con cada palabra separada por _ . Este es el esquema de nombres predeterminado en C++.

Ejemplos: "firstName", "FirstName", "mFirstName", "FIRST_NAME", "First$Name" se convierten en "first_name".

Política de nombres de reinopública estática final

No se aplica ninguna política. Esta política no anulará ninguna política establecida en un elemento principal; por ejemplo, si se establece en RealmClass.fieldNamingPolicy, la política del módulo se seguirá aplicando a los nombres de campo.

Si dos módulos no están de acuerdo con la política y uno de ellos es NO_POLICY , se elegirá el otro sin que se produzca ningún error.

Esta política es la predeterminada.

Política de nombres de reinopública estática final

El nombre en la clase del modelo Java se convierte a PascalCase, es decir, todas las palabras se unen con la primera letra en mayúscula. Este es el esquema de nombres predeterminado en .NET. Ejemplos: "firstName", "FirstName", "mFirstName", "FIRST_NAME", "First$Name" se convierten en "FirstName".

public static RealmNamingPolicy valueOf (
String name
)
public static RealmNamingPolicy values ()

Volver

RealmModule

En esta página