Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ / /

Política de nomeação de Realm Enum

Nesta página

  • io.realm.annotations
  • Resumo da constante enumeração
  • Resumo do método
  • Métodos herdados
  • Detalhes da constante enumeração
  • CAMEL_CASE
  • IDENTITY
  • LOWER_CASE_WITH_UNDERSCORES
  • NO_POLICY
  • PASCAL_CASE
  • Detalhes do método
  • valor de
  • values
java.lang.Object
io.realm.annotations.RealmNamingPolicy

Esse enumeração define as possíveis maneiras pelas quais os nomes de classe e campo podem ser mapeados do que é usado em Java para o nome usado internamente no Arquivo de Realm Realm.Exemplos em que isso é útil:

  • Para oferecer suporte a duas classes de modelo com o mesmo nome simples, mas em pacotes diferentes.

  • Para facilitar o trabalho com esquemas de plataforma cruzada, as convenções de nomenclatura são diferentes.

  • Para usar um nome de classe Java maior que o limite de 57 caracteres imposto pelo Realm.

  • Para alterar um nome de campo em Java sem forçar os usuários do aplicativo por um processo de migração.

Dependendo de onde a política é aplicada, ela terá semântica ligeiramente diferente:

  • Se aplicado a RealmModule.classNamingPolicy todas as classes que fazem parte desse módulo serão afetadas. Se uma classe fizer parte de vários módulos, a mesma política de nomenclatura deverá ser aplicada a ambos os módulos, caso contrário, um erro será gerado.

  • Se aplicado a RealmModule.fieldNamingPolicy todos os campos persistentes em todas as classes que fazem parte deste módulo serão afetados.

  • Se aplicado a RealmClass.fieldNamingPolicy todos os campos dessa classe serão afetados. Isso substituirá qualquer política de nomenclatura de campo especificada em um módulo.

Um exemplo disso:

@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
}

Escolher um nome interno diferente do nome usado nas classes de modelo Java tem as seguintes implicações:

  • As queries no DynamicRealm devem utilizar o nome interno. As queries em instâncias Realm normais devem continuar usando o nome conforme definido na classe Java.

  • As migrações devem usar o nome interno ao criar classes e campos.

  • Erros de esquema relatados usarão os nomes internos.

Ao converter automaticamente nomes de variáveis Java, cada nome de variável é normalizado dividindo-o em uma lista de palavras que são unidas usando as regras do formato de destino. As seguintes heurísticas são usadas para determinar o que constitui uma "palavra".

  1. Sempre que um _ ou $ for encontrado. Os exemplos são "_FirstName", "_First_Name" e "$First$Name", que se tornam "First" e "Name".

  2. Sempre que você alternar de um caractere minúsculo para um caractere maiúsculo, conforme identificado por Personagem.isUpperCase(int) e Person.isLowerCase(int) . Exemplo é "FirstName", que se torna "First" e "Name".

  3. Sempre que você alternar de mais de um caractere maiúsculo para um minúscula. A última letra maiúscula é assumida como parte da próxima palavra. Isso é identificado usando Person.isUpperCase(int) e Person.isLowerCase(int) . Exemplo é "FIRSTName" que se torna "FIRST" e "Name.

  4. Alguns caracteres, como Emoction, não são caracteres maiúsculos nem minúsculos, portanto, farão parte da palavra atual. Exemplos são "meu e "meu, que são tratados como uma palavra.

  5. A notação húngara, ou seja, os nomes de variáveis que começam com "m" em minúsculas seguidos por uma letra maiúscula, são removidos e não são considerados parte de nenhuma palavra. Exemplo é "mFirstName" e "mFIRSTName" que se torna "First" e "Name.

Observe que alterar o nome interno NÃO afeta a importação de dados de JSON. Os dados JSON ainda devem seguir os nomes conforme definido na classe Java do Realm.

Quando se trata de analisar JSON usando bibliotecas padrão como Moshi, GSON ou JSON, é importante ter em mente que essas bibliotecas definem a transformação de JSON para Java, enquanto a configuração de nomes de Realm internos define a transformação de Java para o Arquivo de Realm.

Isso significa que, para importar dados do JSON para o Realm usando essas bibliotecas, você ainda precisará fornecer as anotações da biblioteca do analisador JSON e do Realm.

Usando o Moshi, pareceria algo assim:

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
}

Dica

Veja também:

Constante enumeração e descrição

CAEL_CASE

O nome na classe de modelo Java é convertido em camelCase, ou seja,

IDENTIDADE

O nome na classe de modelo Java é usado como está internamente.

lower_Case_WITH_UNDERSCORES

O nome na classe de modelo Java é convertido em minúsculas com cada palavra separada por _ .

NO_POLICY

Nenhuma política é aplicada.

PAscal_Case

O nome na classe de modelo Java é convertido para PascalCase, ou seja,

Modificador e tipo
Método e descrição
público estático RealmNamingPolicy
público estático RealmNamingPolicy
  • Métodos herdados da classe java.lang.Object : getClass , hashCode , equals , clone , toString , notify , notifyAll , wait , wait , wait , finalize

  • Métodos herdados da classe java.lang.Enum : name , ordinal , toString , equals , hashCode , clone , compareTo , getDeclaringClass , valueOf , finalize

public static final RealmNamingPolicy

O nome na classe de modelo Java é convertido para camelCase, ou seja, todas as palavras são unidas com a primeira letra da primeira palavra em minúsculas e a primeira letra de todas as palavras subsequentes em maiúsculas. Este é o esquema de nomenclatura padrão em Java, Kotlin, Swift e JavaScript.Exemplos: "firstName", "FirstName", "mFirstName", "FIRST_NAME", "First$Name" all torna-se "firstName".

public static final RealmNamingPolicy

O nome na classe de modelo Java é usado como está internamente.

public static final RealmNamingPolicy

O nome na classe de modelo Java é convertido em minúsculas com cada palavra separada por _ . Este é o esquema de nomenclatura padrão em C++.

Exemplos: "firstName", "FirstName", "mFirstName", "FIRST_NAME", "First$Name", tudo se torna "first_name".

public static final RealmNamingPolicy

Nenhuma política é aplicada. Esta política não substituirá qualquer política definida em um elemento pai, por exemplo, se definida em RealmClass.fieldNamingPolicy , a política de módulo ainda se aplicará aos nomes dos campos.

Se dois módulos discordarem da política e um deles for NO_POLICY , o outro será escolhido sem que um erro seja gerado.

Esta política é o padrão.

public static final RealmNamingPolicy

O nome na classe de modelo Java é convertido para PascalCase, ou seja, todas as palavras são unidas com a primeira letra de todas as palavras em maiúsculas. Este é o esquema de nomenclatura padrão no .NET.Examples: "firstName", "FirstName", "mFirstName", "FIRST_NAME", "First$Name" all torna-se "FirstName".

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

Voltar

Módulo Realm