安装包 io.realm
RealmAny 类
- java.lang.Object
-
- io.realm.RealmAny
-
public class RealmAny extends Object
RealmAny
用于表示多态 Realm 值。在任何特定时刻,此类的实例都会存储确定类型的确定值。 如果,实例,这是一个双精度值,则可以调用 asDouble() 来提取该值。您可以调用 getType() 来了解当前存储的值类型。 在不存储双精度值的实例上调用 asDouble() 会引发
ClassCastException
。RealmAny 在所有支持的类型上的行为类似于值类型,但 Realm 对象除外。 这意味着 Realm 不会持久化对 RealmAny 值的任何更改,除非类型为 Realm 对象。 当 RealmAny 持有 Realm 对象时,它只是持有该对象的引用,而不是该对象的副本。 因此,对 Realm 对象的修改会反映在 RealmAny 值中,包括是否删除该对象。 由于 RealmAny 实例不可变,因此需要新实例来更新 RealmAny 属性。
anObject.realmAnyAttribute = RealmAny.valueOf(5); anObject.realmAnyAttribute = RealmAny.valueOf(10.f);
在处理 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 类。 如果生成的类是
RealmModel
的实现,则可以调用 asRealmModel() 将 RealmAny 值转换为 Realm 对象引用。RealmAny 值也可以进行排序。 不同 RealmAny 类型之间使用的排序顺序(从低到高)为:
- 布尔
- 字节/短整型/整数/长整型/浮点型/双精度型/十进制 128
- 字节[]/字符串
- Date
- ObjectId
- UUID
- RealmObject
RealmQuery.sort(String)
、RealmQuery.minRealmAny(String)
和RealmQuery.maxRealmAny(String)
的工作方式产生影响。 特别是min()
和max()
不仅会考虑数字字段,还会使用排序顺序来确定“最大”或“最小”值。
-
-
嵌套类摘要
嵌套类 修饰符和类型 类 说明 static class
RealmAny.Type
描述 RealmAny 支持的所有类型的枚举。
-
方法摘要
所有方法 静态方法 实例方法 具体方法 修饰符和类型 方法 说明 byte[]
asBinary()
如果该值是 1,则以字节[] 形式获取该值,否则抛出异常。Boolean
asBoolean()
如果该值是 1,则获取布尔值形式,否则抛出异常。Byte
asByte()
如果该值是 1,则获取 Byte 形式的值,否则抛出异常。Date
asDate()
如果此值是 1,则获取 Date 形式的值,否则抛出异常。Decimal128
asDecimal128()
如果该值是 1,则获取 Decimal128 形式的值,否则抛出异常。Double
asDouble()
如果该值是 1,则获取 Double 形式的值,否则抛出异常。Float
asFloat()
如果该值是 1,则获取 Float 形式的值,否则抛出异常。Integer
asInteger()
如果该值是 1,则以整数形式获取该值,否则抛出异常。Long
asLong()
如果该值是 1,则获取 Long 值,否则抛出异常。ObjectId
asObjectId()
如果此值是 1,则将其作为 ObjectId 获取,否则将引发异常。<T extends RealmModel>
TasRealmModel(Class<T> clazz)
如果此值是 1,则将其作为 RealmModel 获取,否则会引发异常。Short
asShort()
如果此值是 1,则将其作为 Short 获取,否则会引发异常。String
asString()
如果该值是 1,则以字符串形式获取该值,否则抛出异常。UUID
asUUID()
如果此值是 1,则将其作为 UUID 获取,否则将引发异常。boolean
coercedEquals(RealmAny other)
boolean
equals(Object other)
两个RealmAny
是.equals
,当且仅当它们的内容相等。RealmAny.Type
getType()
获取此 RealmAny 对象的内部类型。Class<?>
getValueClass()
返回表示由此 RealmAny 值包装的内部值的 Java 类。int
hashCode()
RealmAny
的哈希码正是其值的哈希码。boolean
isNull()
如果内部值为 null,则返回 true,否则返回 false。static RealmAny
nullValue()
创建空值的新 RealmAny。String
toString()
static RealmAny
valueOf(byte[] value)
使用指定值创建新的 RealmAny。static RealmAny
valueOf(RealmModel value)
使用指定值创建新的 RealmAny。static RealmAny
valueOf(Boolean value)
使用指定值创建新的 RealmAny。static RealmAny
valueOf(Byte value)
使用指定值创建新的 RealmAny。static RealmAny
valueOf(Double value)
使用指定值创建新的 RealmAny。static RealmAny
valueOf(Float value)
使用指定值创建新的 RealmAny。static RealmAny
valueOf(Integer value)
使用指定值创建新的 RealmAny。static RealmAny
valueOf(Long value)
使用指定值创建新的 RealmAny。static RealmAny
valueOf(Short value)
使用指定值创建新的 RealmAny。static RealmAny
valueOf(String value)
使用指定值创建新的 RealmAny。static RealmAny
valueOf(Date value)
使用指定值创建新的 RealmAny。static RealmAny
valueOf(UUID value)
使用指定值创建新的 RealmAny。static RealmAny
valueOf(Decimal128 value)
使用指定值创建新的 RealmAny。static RealmAny
valueOf(ObjectId value)
使用指定值创建新的 RealmAny。
-
-
-
方法详细信息
-
getType
公共RealmAny.Type getType()
获取此 RealmAny 对象的内部类型。- 返回:
- 内部 RealmAny.Type
-
getValueClass
@Nullable public Class<?> getValueClass()
返回表示由此 RealmAny 值包装的内部值的 Java 类。- 返回:
- 表示由此 RealmAny 值包装的内部值的类。
-
的值
public static RealmAny valueOf(@Nullable Byte value)
使用指定值创建新的 RealmAny。 如果值不为 null,则类型将为RealmAny.Type.INTEGER
,否则为RealmAny.Type.NULL
。- 参数:
value
- RealmAny 值。- 返回:
- 包含 Byte 值的新 RealmAny。
-
的值
public static RealmAny valueOf(@Nullable Short value)
使用指定值创建新的 RealmAny。 如果值不为 null,则类型将为RealmAny.Type.INTEGER
,否则为RealmAny.Type.NULL
。- 参数:
value
- RealmAny 值。- 返回:
- 一个新的 RealmAny 或 Short。
-
的值
public static RealmAny valueOf(@Nullable Integer value)
使用指定值创建新的 RealmAny。 如果值不为 null,则类型将为RealmAny.Type.INTEGER
,否则为RealmAny.Type.NULL
。- 参数:
value
- RealmAny 值。- 返回:
- 一个新的 RealmAny 整数。
-
的值
public static RealmAny valueOf(@Nullable Long value)
使用指定值创建新的 RealmAny。 如果值不为 null,则类型将为RealmAny.Type.INTEGER
,否则为RealmAny.Type.NULL
。- 参数:
value
- RealmAny 值。- 返回:
- 一个新的 RealmAny 或一个 Long。
-
的值
public static RealmAny valueOf(@Nullable Boolean value)
使用指定值创建新的 RealmAny。 如果值不为 null,则类型将为RealmAny.Type.BOOLEAN
,否则为RealmAny.Type.NULL
。- 参数:
value
- RealmAny 值。- 返回:
- 布尔值的新 RealmAny。
-
的值
public static RealmAny valueOf(@Nullable Float value)
使用指定值创建新的 RealmAny。 如果值不为 null,则类型将为RealmAny.Type.FLOAT
,否则为RealmAny.Type.NULL
。- 参数:
value
- RealmAny 值。- 返回:
- 一个新的 RealmAny 或 Float。
-
的值
public static RealmAny valueOf(@Nullable Double value)
使用指定值创建新的 RealmAny。 如果值不为 null,则类型将为RealmAny.Type.DOUBLE
,否则为RealmAny.Type.NULL
。- 参数:
value
- RealmAny 值。- 返回:
- 一个新的 RealmAny 或 Double。
-
的值
public static RealmAny valueOf(@Nullable String value)
使用指定值创建新的 RealmAny。 如果值不为 null,则类型将为RealmAny.Type.STRING
,否则为RealmAny.Type.NULL
。- 参数:
value
- RealmAny 值。- 返回:
- 字符串的新 RealmAny。
-
的值
public static RealmAny valueOf(@Nullable byte[] value)
使用指定值创建新的 RealmAny。 如果值不为 null,则类型将为RealmAny.Type.BINARY
,否则为RealmAny.Type.NULL
。- 参数:
value
- RealmAny 值。- 返回:
- 字节 [] 的新 RealmAny。
-
的值
public static RealmAny valueOf(@Nullable Date value)
使用指定值创建新的 RealmAny。 如果值不为 null,则类型将为RealmAny.Type.DATE
,否则为RealmAny.Type.NULL
。- 参数:
value
- RealmAny 值。- 返回:
- 新的 RealmAny 日期。
-
的值
public static RealmAny valueOf(@Nullable ObjectId value)
使用指定值创建新的 RealmAny。 如果值不为 null,则类型将为RealmAny.Type.OBJECT_ID
,否则为RealmAny.Type.NULL
。- 参数:
value
- RealmAny 值。- 返回:
- ObjectId 的新 RealmAny。
-
的值
public static RealmAny valueOf(@Nullable Decimal128 value)
使用指定值创建新的 RealmAny。 如果值不为 null,则类型将为RealmAny.Type.DECIMAL128
,否则为RealmAny.Type.NULL
。- 参数:
value
- RealmAny 值。- 返回:
- Decimal128 中的新 RealmAny。
-
的值
public static RealmAny valueOf(@Nullable UUID value)
使用指定值创建新的 RealmAny。 如果值不为 null,则类型将为RealmAny.Type.UUID
,否则为RealmAny.Type.NULL
。- 参数:
value
- RealmAny 值。- 返回:
- UUID 的新 RealmAny。
-
nullValue
public static RealmAny nullValue()
创建空值的新 RealmAny。- 返回:
- null 值的新 RealmAny 实例。
-
的值
public static RealmAny valueOf(@Nullable RealmModel value)
使用指定值创建新的 RealmAny。- 参数:
value
- RealmAny 值。- 返回:
- RealmModel 的新 RealmAny。
-
IsNull
public boolean isNull()
如果内部值为 null,则返回 true,否则返回 false。- 返回:
- 如果内部值为 null,则为 true,否则为 false。
-
asByte
public Byte asByte()
如果该值是 1,则获取 Byte 形式的值,否则抛出异常。- 返回:
- 一个字节。
- 抛出异常:
ClassCastException
- 如果该值不是预期的类型。
-
asShort
公共短asShort()
如果此值是 1,则将其作为 Short 获取,否则会引发异常。- 返回:
- 短视频。
- 抛出异常:
ClassCastException
- 如果该值不是预期的类型。
-
asInteger
public Integer asInteger()
如果该值是 1,则以整数形式获取该值,否则抛出异常。- 返回:
- 一个整数。
- 抛出异常:
ClassCastException
- 如果该值不是预期的类型。
-
asLong
public Long asLong()
如果该值是 1,则获取 Long 值,否则抛出异常。- 返回:
- 长整型。
- 抛出异常:
ClassCastException
- 如果该值不是预期的类型。
-
asBoolean
public Boolean asBoolean()
如果该值是 1,则获取布尔值形式,否则抛出异常。- 返回:
- 一个布尔值。
- 抛出异常:
ClassCastException
- 如果该值不是预期的类型。
-
asFloat
public Float asFloat()
如果该值是 1,则获取 Float 形式的值,否则抛出异常。- 返回:
- 一个 Float。
- 抛出异常:
ClassCastException
- 如果该值不是预期的类型。
-
asDouble
public Double asDouble()
如果该值是 1,则获取 Double 形式的值,否则抛出异常。- 返回:
- 一个 Double。
- 抛出异常:
ClassCastException
- 如果该值不是预期的类型。
-
asString
public String asString()
如果该值是 1,则以字符串形式获取该值,否则抛出异常。- 返回:
- 一个字符串,
- 抛出异常:
ClassCastException
- 如果该值不是预期的类型。
-
asBinary
public byte[] asBinary()
如果该值是 1,则以字节[] 形式获取该值,否则抛出异常。- 返回:
- 一个字节[]。
- 抛出异常:
ClassCastException
- 如果该值不是预期的类型。
-
asDate
public Date asDate()
如果此值是 1,则获取 Date 形式的值,否则抛出异常。- 返回:
- 日期。
- 抛出异常:
ClassCastException
- 如果该值不是预期的类型。
-
asObjectId
public ObjectId asObjectId()
如果此值是 1,则将其作为 ObjectId 获取,否则将引发异常。- 返回:
- ObjectId。
- 抛出异常:
ClassCastException
- 如果该值不是预期的类型。
-
asUUID
公共UUID asUUID()
如果此值是 1,则将其作为 UUID 获取,否则将引发异常。- 返回:
- UUID。
- 抛出异常:
ClassCastException
- 如果该值不是预期的类型。
-
asDecimal128
public Decimal128 asDecimal128()
如果该值是 1,则获取 Decimal128 形式的值,否则抛出异常。- 返回:
- a Decimal128。
- 抛出异常:
ClassCastException
- 如果该值不是预期的类型。
-
asRealmModel
public <T extends RealmModel> T asRealmModel(Class<T> clazz)
如果此值是 1,则将其作为 RealmModel 获取,否则会引发异常。- 类型参数:
T
- 内部值要转换到的 RealmModel 类型。- 返回:
- T 类型的 RealmModel。
- 抛出异常:
ClassCastException
- 如果该值不是预期的类型。
-
hashCode
public final int hashCode()
RealmAny
的哈希码正是其值的哈希码。- 覆盖:
hashCode
课堂上Object
- 返回:
- 如果目标具有相同的值,则为 true
- 抛出异常:
NullPointerException
- 如果内部值为 null
-
-