Docs Menu
Docs Home
/ /
Atlas Device SDK
/ / /

注釈 タイプ RealmModle

項目一覧

  • io.realm.annotations
  • RealmModles とライブラリ
  • 任意要素の概要
  • 要素の詳細

実装されたインターフェース:

  • java.lang.annotation.Annotation

デフォルトでは、Realm は RealmObject を拡張するすべてのクラスをプロジェクトに保存できます。 ただし、Realm を クラスのサブセットのみを含むように制限する場合や、ライブラリ プロジェクトとアプリ プロジェクト間でそれらを共有する場合は、RealmModle を使用する必要があります。RealmModle は、次と組み合わせることができる RealmObject を拡張するクラスのコレクションです。他の Realm のスキーマを作成するには、 を使用します。 これにより、これらの Realm のバージョン管理と移行を制御しやすくなります。

RealmModle は、ライブラリ モジュールまたはアプリ モジュールのいずれかになります。 この区別は、 library = trueを設定することで行われます。 library = trueの設定は通常、ライブラリの作成者にのみ関連します。 詳細については、以下を参照してください。

現在のところ、1 つのファイルに複数の RealmModle 宣言を含めることはできません。 複数の RealmModle がある場合は、モジュールごとに個別の Java ファイルを使用する必要があります。

Realm のデフォルトの動作は、プロジェクト内の RealmObject を拡張するすべてのクラスを含むDefaultRealmModuleという RealmModle を自動的に作成することです。 このモジュールは、Realm によって自動的に認識されます。

この動作は、ライブラリ プロジェクトと Realm の両方を使用するアプリ プロジェクトを組み合わせる場合に問題があります。 これは、ライブラリ プロジェクトとアプリ プロジェクトの両方に対してDefaultRealmModuleが作成されるため、重複クラス定義エラーでプロジェクトが失敗するためです。

ライブラリの作成者は、 library = trueが設定されている明示的なモジュールを使用することで、この競合を回避する必要があります。 これにより、ライブラリ プロジェクトの DefaultRealmModle の生成が無効になり、Realm も使用するアプリプロジェクトにライブラリを含めることができます。 つまり、Realm を内部的に使用するライブラリ プロジェクトでは、 RealmConfiguration.modules()を使用して特定のモジュールを指定する必要があります。

アプリ開発者は暗黙的にDefaultRealmModuleを使用するため、モジュールを指定する必要はありませんが、 RealmConfiguration.addModule()を使用してライブラリのプロジェクト クラスをスキーマに追加できるオプションが追加されました。

Tip

以下も参照してください。

修飾子と型
任意要素と説明
パブリックブール値
すべての Realm クラスをモジュールに手動で追加する代わりに、このブール値を true に設定して、このプロジェクトにすべての Realm クラスを自動的に含めます。
このモジュールのすべてのクラス部分に適用された命名ポリシー。
このモジュールの一部となる RealmObject を拡張するクラスを指定します。
このモジュールのすべてのクラスのすべてのフィールド名に適用された命名ポリシー。
パブリックブール値
これを true に設定すると、このモジュールはライブラリ モジュールとしてマークされます。
allClasses

public boolean allClasses

すべての Realm クラスをモジュールに手動で追加する代わりに、このブール値を true に設定して、このプロジェクトにすべての Realm クラスを自動的に含めます。 これには、独自のモジュールを使用して公開する必要がある他のライブラリのクラスは含まれません。 allClasses = trueclasses()の両方を設定すると、注釈プロセッサは例外をスローします。

デフォルト: false

ClassNamePolicy

public RealmNamingPolicy classNamingPolicy

このモジュールのすべてのクラス部分に適用された命名ポリシー。 デフォルトのポリシーはRealmNamePolicy.NO_ポリシー です。 クラス内のすべてのフィールドの命名ポリシーを定義するには、 fieldNamePolicy()を使用します。

RealmClassアノテーションを使用して、各クラスの モジュールで指定された命名ポリシーを上書きできます。

クラスが複数のモジュールの一部である場合は、両方のモジュールに同じ命名ポリシーを適用する必要があります。そうでない場合は、エラーがスローされます。

デフォルト: io.realm.annotations.RealmNamingPolicy.NO_POLICY

クラス

public Class classes

このモジュールの一部となる RealmObject を拡張するクラスを指定します。 このプロジェクト内のクラスのみを含めることができます。 他のライブラリのクラスは、独自のモジュールを使用して公開する必要があります。 allClasses = trueclasses()の両方を設定すると、注釈プロセッサは例外をスローします。

デフォルト: {}

fieldNamePolicy

public RealmNamingPolicy fieldNamingPolicy

このモジュールのすべてのクラスのすべてのフィールド名に適用された命名ポリシー。 デフォルトのポリシーはRealmNamePolicy.NO_ポリシー です。 クラス名の命名ポリシーを定義するには、 ClassNamePolicy()を使用します。

この命名ポリシーは、 RealmClass.fieldNamePolicy()またはRealmField.name( ) を使用して上書きできます。

デフォルト: io.realm.annotations.RealmNamingPolicy.NO_POLICY

ライブラリ

public boolean library

これを true に設定すると、このモジュールはライブラリ モジュールとしてマークされます。 これにより、Realm はすべてのクラスを含むDefaultRealmModuleを生成できなくなります。 これはライブラリに必要なため、アプリ コード内で実行される Realm を利用することはありませんが、Realm を使用するすべてのライブラリは明示的に モジュールを使用する必要があり、デフォルトのモジュールが存在することに依存できません。 同じプロジェクトでライブラリ モジュールと通常のモジュールを作成することは許可されていないため、注釈プロセッサは例外をスローします。

デフォルト: false

戻る

RealmField