RealmNameingPolicy を列挙する
項目一覧
io.realm.annotations
この列挙型は、クラス名とフィールド名を Java で使用されるものから Realm ファイルの内部で使用される名前にマッピングする方法を定義します。これが役立つ例:
同じシンプル名で、パッケージが異なる 2 つのモデル クラスをサポートします。
命名規則が異なるため、複数のプラットフォームにまたがるスキーマの操作を容易にするため。
Realm によって強制される 57 文字の制限よりも長い Java クラス名を使用します。
アプリユーザーに移行プロセスを強制せずに Java でフィールド名を変更します。
ポリシーが適用される場所に応じて、セマンティクスは若干異なります。
RealmModule.ClassNamePolicyに適用された場合 そのモジュールのすべてのクラス部分が影響を受けます。 クラスが複数のモジュールの一部である場合は、両方のモジュールに同じ命名ポリシーを適用する必要があります。そうでない場合は、エラーがスローされます。
RealmModle.fieldNamePolicyに適用された場合 このモジュールのすべてのクラスのすべての永続的なフィールドが影響を受けます。
RealmClass.fieldNamePolicyに適用されると、そのクラスのすべてのフィールドが影響を受けます。 これにより、モジュールに指定されたフィールド命名ポリシーが上書きされます。
以下の例は、次のとおりです。
public class Person implements RealmModel { // is converted to "__person" internally public string firstName; // Is converted to "first_name" internally }
Java モデル クラスで使用される名前とは異なる内部名を選択する場合、次の影響があります。
DynamicRealm
のクエリでは、内部名を使用する必要があります。 通常のRealm
インスタンスに対するクエリでは、Java クラスで定義されている名前を引き続き使用する必要があります。移行では、クラスとフィールドを作成するときに内部名を使用する必要があります。
スキーマ エラーが報告された場合は、内部名が使用されます。
Java 変数名を自動的に変換する際、各変数名は単語のリストに分割して正規化され、ターゲット形式のルールを使用して結合されます。 次の人間は、「単語」を構成する要素を決定するために使用されます。
_
または$
が発生したたび。 たとえば、"_FirstName"、"_First_Name"、"$First$Name" はすべて "First" と "Name" になります。小文字から大文字と小文字に 切り替える たびにおよび string 。例としては、"FirstName" が「First」と「Name」になります。
複数の大文字から小文字の に切り替えるたび。 最後の大文字は、次の単語の一部であると想定されます。 これは、 characters.isUpperCate(int) を使用することで識別されますおよび string 。例としては、"FIRSTName" で、これは "FIRST" と "Name" になります。
イメージの一部の文字は大文字でも小文字でもないため、現在の単語の一部になります。 例としては、"myReader" と "MyReader" が挙げられます。これらは両方とも 1 つの単語として扱われます。
ハンガリー表記、つまり小文字の "m" で始まり、その後に大文字の文字が続く変数名は切り捨てられ、単語の一部とは見なされません。 例としては、"mFirstName" と "mFIRSTName" で、これは "First" と "Name" になります。
内部名を変更しても、JSON からのデータのインポートには影響しないことに注意してください。 JSON データは、Realm Java クラスで定義されている名前に従う必要があります。
Moshi、GSON、Jackson などの標準ライブラリを使用して JSON を解析する場合は、これらのライブラリが JSON から Java への変換を定義し、内部 Realm 名を設定すると、Java から Realm ファイルへの変換が定義されることを覚えておいてください。
つまり、これらのライブラリを使用して JSON から Realm にデータをインポートする場合は、JSON パーサー ライブラリと Realm の両方から注釈を提供する必要があります。
Moshi を使用すると、次のようになります。
public class Person extends RealmObject { // Name used in JSON input. // Name used internally in the Realm file. public string firstName; // name used in Java }
列挙定数の概要
列挙定数と説明 |
---|
Java モデル クラスの名前はキャメルケースに変換され、 |
Java モデル クラス内の 名前は、内部的に として使用されます。 |
Java モデル クラス内の は、各単語が |
ポリシーは適用されません。 |
Java モデル クラス内の名前はパスカルケースに変換されます。 |
メソッドの概要
修飾子と型 | メソッドと説明 |
---|---|
values () |
継承されたメソッド
クラス java.lang.Object から継承されたメソッド :
getClass
、hashCode
、equals
、clone
、toString
、notify
、notifyAll
、wait
、wait
、wait
、finalize
クラス java.lang.Enum から継承されたメソッド :
name
、ordinal
、toString
、equals
、hashCode
、clone
、compareTo
、getDeclaringClass
、valueOf
、finalize
列挙定数の詳細
CAMEL_CASE
public static final RealmNamingPolicy
Java モデル クラスの名前はキャメルケースに変換されます。つまり、すべての単語が、最初の単語の最初の文字は小文字になり、後続のすべての単語の最初の文字は大文字と小文字で結合されます。 これは、Java、 Kotlin、Swift、JavaScript の標準的な命名スキーマです。例: "firstName"、"FirstName"、"mFirstName"、"FIRST_NAME"、"FirstName" はすべて "firstName" になります。
IDENTITY
public static final RealmNamingPolicy
Java モデル クラス内の 名前は、内部的に として使用されます。
LOWER_CASE_WITH_UNDERSCORES
public static final RealmNamingPolicy
Java モデル クラス内の は、各単語が_
で区切られた小文字に変換されます。 これは、C++ のデフォルトの命名スキームです。
例: "firstName"、"FirstName"、"mFirstName"、"FIRST_NAME"、"First$Name" はすべて "first_name" になります。
NO_POLICY
public static final RealmNamingPolicy
ポリシーは適用されません。 このポリシーは、親要素に設定されたポリシーを上書きすることはありません。たとえば、 RealmClass.fieldNamePolicyに設定されている場合、モジュール ポリシーはフィールド名に引き続き適用されます。
2 つのモジュールがポリシーで相違し、いずれか 1 つがNO_POLICY
である場合、エラーはスローされることなくもう 1 つが選択されます。
このポリシーはデフォルトです。
PASCAL_CASE
public static final RealmNamingPolicy
Java モデル クラスの名前はパスカルケースに変換されます。つまり、すべての単語が大文字の最初の文字で結合されます。 これは、.NET のデフォルトの命名スキームです。例: "firstName"、"FirstName"、"mFirstName"、"FIRST_NAME"、"First$Name" はすべて "FirstName" になります。
メソッドの詳細
valueOf
values
public static RealmNamingPolicy values () |
---|