Menu Docs

Página inicial do DocsDesenvolver aplicaçõesAtlas Device SDKs

Tipo de anotação RealmModule

Nesta página

  • io.realm.annotations
  • Módulos e bibliotecas do Realm
  • Resumo do elemento opcional
  • Detalhes do elemento

Interfaces implementadas:

Por padrão, um Realm pode armazenar todas as classes que estendem o RealmObject em um projeto. No entanto, se você quiser restringir um Realm para conter apenas um subconjunto de classes ou quiser compartilhá-lo entre um projeto de biblioteca e um projeto de aplicativo, use um RealmModule.Um RealmModule é uma collection de classes que estendem o RealmObject que podem ser combinadas com outros RealmModles para criar o esquema para um Realm. Isso facilita o controle da versão e a migração desses Realms.

Um RealmModule pode ser um módulo de biblioteca ou um módulo de aplicativo. A distinção é feita definindo library = true . A configuração library = true normalmente só é relevante para autores de bibliotecas. Veja abaixo mais detalhes.

Atualmente, não é possível ter várias declarações do RealmModule em um único arquivo. Se você tiver mais de um RealmModule, terá que usar arquivos Java separados para cada módulo.

O comportamento padrão do Realm é criar automaticamente um RealmModule chamado DefaultRealmModule que contém todas as classes que estendem o RealmObject em um projeto. Este módulo é automaticamente conhecido pelo Realm.

Esse comportamento é problemático ao combinar um projeto de biblioteca e um projeto de aplicativo que ambos usam o Realm. Isso ocorre porque o DefaultRealmModule será criado para o projeto da biblioteca e o projeto do aplicativo, o que fará com que o projeto falhe com erros de definição de classe duplicados.

Os autores da biblioteca são responsáveis por evitar esse conflito usando módulos explícitos em que library = true está definido. Isso desabilita a geração do DefaultRealmModule para o projeto da biblioteca e permite que a biblioteca seja incluída no projeto do aplicativo que também usa o Realm. Isso significa que os projetos de bibliotecas que usam o Realm internamente são obrigados a especificar um módulo específico usando RealmConfiguration.modules() .

Os desenvolvedores de aplicativos não são obrigados a especificar nenhum módulo, pois implicitamente usam o DefaultRealmModule , mas agora têm a opção de adicionar as classes do projeto de biblioteca ao seu esquema usando RealmConfiguration.addModule() .

Dica

Veja também:

Modificador e tipo
Elemento opcional e descrição
booleanopúblico
Em vez de adicionar todas as classes do Realm manualmente a um módulo, defina este booleano como true para incluir automaticamente todas as classes do Realm neste projeto.
política pública de nomeação de domínios
A política de nomenclatura foi aplicada a todas as classes que fazem parte deste módulo.
classe pública
Especifica as classes que estendem o RealmObject que devem fazer parte deste módulo.
política pública de nomeação de domínios
A política de nomenclatura aplicada a todos os nomes de campo em todas as classes que fazem parte deste módulo.
booleanopúblico
Definir isso como verdadeiro marcará este módulo como um módulo de biblioteca.
allClasses

public boolean allClasses

Em vez de adicionar todas as classes do Realm manualmente a um módulo, defina este booleano como true para incluir automaticamente todas as classes do Realm neste projeto. Isso não inclui classes de outras bibliotecas que devem ser expostas usando seu próprio módulo. Configurar allClasses = true e classes() fará com que o processador de anotação lance uma exceção.

Padrão: false

classNamingPolicy

public RealmNamingPolicy classNamingPolicy

A política de nomenclatura aplicada a todas as classes que fazem parte deste módulo. A política padrão é RealmNamingPolicy.NO_POLICY . Para definir uma política de nomenclatura para todos os campos das classes, use fieldNamingPolicy() .

É possível substituir a política de nomenclatura especificada no módulo em cada classe usando a anotação RealmClass .

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.

Padrão: io.realm.annotations.RealmNamingPolicy.NO_POLICY

aulas

public Class classes

Especifica as classes que estendem o RealmObject que devem fazer parte deste módulo. Somente classes neste projeto podem ser incluídas. Classes de outras bibliotecas devem ser expostas usando seu próprio módulo. Configurar allClasses = true e classes() fará com que o processador de anotação lance uma exceção.

Padrão: {}

fieldNamingPolicy

public RealmNamingPolicy fieldNamingPolicy

A política de nomenclatura aplicada a todos os nomes de campo em todas as classes que fazem parte deste módulo. A política padrão é RealmNamingPolicy.NO_POLICY . Para definir uma política de nomenclatura para nomes de classe, use classNamingPolicy() .

É possível substituir esta política de nomenclatura utilizando RealmClass.fieldNamingPolicy() ou RealmField.name() .

Padrão: io.realm.annotations.RealmNamingPolicy.NO_POLICY

Internas

public boolean library

Definir isso como verdadeiro marcará este módulo como um módulo de biblioteca. Isso evitará que o Realm gere o DefaultRealmModule contendo todas as classes. Isso é exigido pelas bibliotecas para que não interfiram com os Realms em execução no código do aplicativo, mas também significa que todas as bibliotecas que usam o Realm devem usar explicitamente um módulo e não podem confiar na presença do módulo padrão. A criação de módulos de biblioteca e módulos normais no mesmo projeto não é permitida e fará com que o processador de anotações lance uma exceção.

Padrão: false

← Tipo de anotação RealmField