RealmAny 类
在此页面上
io.realm
io.realm.RealmAny用于表示多态 Realm 值。
在任何特定时刻,此类的实例都会存储确定类型的确定值。 例如,如果这是一个双精度值,则可以调用 asDouble() 来提取该值。 您可以调用 getType() 来了解当前存储的值类型。 在不存储双精度值的实例上调用 asDouble() 会引发 java.lang.ClassCastException 。
RealmAny 在所有支持的类型上的行为类似于值类型,但 Realm 对象除外。 这意味着 Realm 不会持久化对 RealmAny 值的任何更改,除非类型为 Realm 对象。 当 RealmAny 持有 Realm 对象时,它只是持有该对象的引用,而不是该对象的副本。 因此,对 Realm 对象的修改会反映在 RealmAny 值中,包括是否删除该对象。 由于 RealmAny 实例不可变,因此需要新实例来更新 RealmAny 属性。
anObject.realmAnyAttribute = RealmAny.valueOf(5); anObject.realmAnyAttribute = RealmAny.valueOf(10.f);
提取特定类型值的行为需要对存储类型有明确的了解,了解这一点至关重要。 为任何特定类型(与存储的值不是同一类型)调用 getter 方法都会引发异常。处理 RealmAny 多态性的建议是围绕 RealmAny 类型及其内部值类编写一个 switch case。
RealmAny realmAny = aRealmObject.realmAnyAttribute; switch (realmAny.getType()) { case OBJECT: if (realmAny.getValueClass().equals(DogRealmModel.class)) { DogRealmModel value = realmAny.asRealmModel(DogRealmModel.class); } case INTEGER: performAction(realmAny.asInteger()); break; case BOOLEAN: performAction(realmAny.asBoolean()); break; case STRING: performAction(realmAny.asString()); break; case BINARY: performAction(realmAny.asBinary()); break; case DATE: performAction(realmAny.asDate()); break; case FLOAT: performAction(realmAny.asFloat()); break; case DOUBLE: performAction(realmAny.asDouble()); break; case DECIMAL128: performAction(realmAny.asDecimal128()); break; case OBJECT_ID: performAction(realmAny.asObjectId()); break; case UUID: performAction(realmAny.asUUID()); break; case NULL: performNullAction(); break; }
getValueClass() 返回表示由 RealmAny 实例包装的内部值的 Java 类。 如果生成的类是 io.realm.RealmModel 的实现,则可以调用asRealmModel () 将 RealmAny 值转换为 Realm 对象引用。
RealmAny 值也可以进行排序。 不同 RealmAny 类型之间使用的排序顺序(从低到高)为:
布尔
字节/短整型/整数/长整型/浮点型/双精度型/十进制 128
字节[]/字符串
Date
ObjectId
UUID
RealmObject
这会对RealmQuery.sort(String) 、 RealmQuery.minRealmAny(String)和RealmQuery.maxRealmAny(String) 工作。 特别是 min()
和max()
不仅会考虑数字字段,还会使用排序顺序来确定“最大”或“最小”值。
嵌套类摘要
修饰符和类型 | 类和描述 |
---|---|
public static final |
方法摘要
修饰符和类型 | 方法和说明 |
---|---|
公共字节 | asBinary () 如果该值是 1,则以字节[] 形式获取该值,否则抛出异常。 |
asBoolean () 如果该值是 1,则获取布尔值形式,否则抛出异常。 | |
公共 字节 | asByte () 如果该值是 1,则获取 Byte 形式的值,否则抛出异常。 |
公共 日期 | asDate () 如果此值是 1,则获取 Date 形式的值,否则抛出异常。 |
公共Decimal128 | asDecimal128 () 如果该值是 1,则获取 Decimal128 形式的值,否则抛出异常。 |
公共 双精度 | asDouble () 如果该值是 1,则获取 Double 形式的值,否则抛出异常。 |
公共 浮点 | asFloat () 如果该值是 1,则获取 Float 形式的值,否则抛出异常。 |
asInteger () 如果该值是 1,则以整数形式获取该值,否则抛出异常。 | |
公共 长整型 | asLong () 如果该值是 1,则获取 Long 值,否则抛出异常。 |
公共ObjectId | asObjectId () 如果此值是 1,则将其作为 ObjectId 获取,否则将引发异常。 |
公共T | 如果此值是 1,则将其作为 RealmModel 获取,否则会引发异常。 |
公共 空头 | asShort () 如果此值是 1,则将其作为 Short 获取,否则会引发异常。 |
公共string | asString () 如果该值是 1,则以字符串形式获取该值,否则抛出异常。 |
公共 UUID | asUUID () 如果此值是 1,则将其作为 UUID 获取,否则将引发异常。 |
public final boolean | |
public final boolean | |
getType () 获取此 RealmAny 对象的内部类型。 | |
公共 类 | 返回表示由此 RealmAny 值包装的内部值的 Java 类。 |
public final int | hashCode ()
|
公共布尔值 | isNull () 如果内部值为 null,则返回 true,否则返回 false。 |
public static RealmAny | nullValue () 创建空值的新 RealmAny。 |
公共string | toString () |
public static RealmAny | 使用指定值创建新的 RealmAny。 |
public static RealmAny | 使用指定值创建新的 RealmAny。 |
public static RealmAny | |
public static RealmAny | 使用指定值创建新的 RealmAny。 |
public static RealmAny | |
public static RealmAny | |
public static RealmAny | |
public static RealmAny | |
public static RealmAny | |
public static RealmAny | |
public static RealmAny | |
public static RealmAny |
继承方法
从类 java.lang.Object 继承的方法 :
getClass
、hashCode
、equals
、clone
、toString
、notify
、notifyAll
、wait
、wait
、wait
、finalize
方法详细信息
asBinary
public byte asBinary () |
---|
asBoolean
asByte
asDate
asDecimal128
public Decimal128 asDecimal128 () |
---|
asDouble
asFloat
asInteger
asLong
asObjectId
public ObjectId asObjectId () |
---|
asRealmModel
如果此值是 1,则将其作为 RealmModel 获取,否则会引发异常。 类型参数
返回: T 类型的 RealmModel。 抛出异常
|
asShort
asString
asUUID
coercedEquals
等于
getType
public RealmAny.Type getType () |
---|
获取此 RealmAny 对象的内部类型。 返回: 内部 RealmAny.Type |
getValueClass
public Class getValueClass () |
---|
返回表示由此 RealmAny 值包装的内部值的 Java 类。 返回: 表示由此 RealmAny 值包装的内部值的类。 |
hashCode
public final int hashCode () |
---|
返回: 如果目标具有相同的值,则为 true 抛出异常
覆盖
|
IsNull
public boolean isNull () |
---|
如果内部值为 null,则返回 true,否则返回 false。 返回: 如果内部值为 null,则为 true,否则为 false。 |
nullValue
toString
的值
使用指定值创建新的 RealmAny。 如果值不为空,则类型将为RealmAny.Type.DECIMAL128 ,否则为RealmAny.Type.NULL 。 参数
返回: Decimal128 中的新 RealmAny。 |
使用指定值创建新的 RealmAny。 如果值不为空,则类型将为RealmAny.Type.OBJECT_ID ,否则为RealmAny.Type.NULL 。 参数
返回: ObjectId 的新 RealmAny。 |
使用指定值创建新的 RealmAny。 如果值不为空,则类型将为RealmAny.Type.DATE ,否则为RealmAny.Type.NULL 。 参数
返回: 新的 RealmAny 日期。 |
使用指定值创建新的 RealmAny。 如果值不为 null,则类型将为RealmAny.Type.BINARY ,否则为RealmAny.Type.NULL 。 参数
返回: 字节 [] 的新 RealmAny。 |
使用指定值创建新的 RealmAny。 如果值不为空,则类型将为RealmAny.Type.STRING ,否则为RealmAny.Type.NULL 。 参数
返回: 字符串的新 RealmAny。 |
使用指定值创建新的 RealmAny。 如果值不为空,则类型将为RealmAny.Type.DOUBLE ,否则为RealmAny.Type.NULL 。 参数
返回: 一个新的 RealmAny 或 Double。 |
使用指定值创建新的 RealmAny。 如果值不为空,则类型将为RealmAny.Type.FLOAT ,否则为RealmAny.Type.NULL 。 参数
返回: 一个新的 RealmAny 或 Float。 |
使用指定值创建新的 RealmAny。 如果值不为空,则类型将为RealmAny.Type.BOOLEAN ,否则为RealmAny.Type.NULL 。 参数
返回: 布尔值的新 RealmAny。 |
使用指定值创建新的 RealmAny。 如果值不为空,则类型将为RealmAny.Type.INTEGER ,否则为RealmAny.Type.NULL 。 参数
返回: 一个新的 RealmAny 或一个 Long。 |
使用指定值创建新的 RealmAny。 如果值不为空,则类型将为RealmAny.Type.INTEGER ,否则为RealmAny.Type.NULL 。 参数
返回: 一个新的 RealmAny 整数。 |
使用指定值创建新的 RealmAny。 如果值不为空,则类型将为RealmAny.Type.INTEGER ,否则为RealmAny.Type.NULL 。 参数
返回: 一个新的 RealmAny 或 Short。 |
使用指定值创建新的 RealmAny。 如果值不为空,则类型将为RealmAny.Type.INTEGER ,否则为RealmAny.Type.NULL 。 参数
返回: 包含 Byte 值的新 RealmAny。 |