安装包 io.realm

MutableRealmInteger 类

  • 所有已实现的接口:
    io.realm.internal.ManageableObject, Comparable<MutableRealmInteger>

    public abstract class MutableRealmInteger
    extends Object
    implements Comparable<MutableRealmInteger>, io.realm.internal.ManageableObject
    MutableRealmInteger是一个可变的、类似Long的数值量。 它的行为几乎与对Long的引用完全相同。 更具体地说:

    MutableRealmInteger作为托管RealmModel对象的成员,这是最有趣的。 托管时, increment(long)decrement(long)操作符实现无冲突复制数据类型:来自多个分布式客户端的同时递增和递减将被正确聚合。 例如,如果表示用户“Fred”的对象的counter字段的值当前为 0,那么在两个不同设备上同时执行以下代码,即使仅通过慢速、不可靠的网络连接,也始终会导致counter的值收敛,最终收敛到值 2。

      MutableRealmInteger counter = realm.where(Users.class)
         .equalTo("name", Fred)
         .findFirst()
         .counter.increment(1);
     
    请注意,使用set(Long)操作符时必须格外小心。 它将消除之前对increment(long)decrement(long)的任何调用的影响。 尽管MutableRealmInteger的值在跨设备时始终会收敛,但其收敛的具体值将取决于操作发生的实际顺序。 因此,不建议将set(Long)increment(long)decrement(long)混合使用,除非可以接受模糊计数。

    MutableRealmIntegers 不能为主键。它们的实现不是线程安全的。 与所有托管 Realm 对象一样,托管MutableRealmInteger可能无法跨线程移动。 非托管MutableRealmInteger可以跨线程移动,但需要安全发布。

    模型类中的MutableRealmInteger必须始终声明为final 。 实例:

     public final MutableRealmInteger counter = MutableRealmInteger.ofNull(); 
     
    尽管将MutableRealmInteger初始化为null可能会在非常有限的情况下起作用,但建议开发者要这样做:
     
      public final MutableRealmInteger counter = null; // DO NOT DO THIS! 
     
    另请注意,当MutableRealmInteger@Required时,最好(但不是必需)使用非空值对其进行初始化。
     
     @Required
      public final MutableRealmInteger counter = MutableRealmInteger.valueOf(0L);
     

    对托管MutableRealmInteger的引用受到适用于从中获取该引用的模型对象的所有约束的约束:它只能在事务中进行更改,并且如果支持它的 Realm 已关闭,则该引用将变为无效。 使用isManaged()isValid()操作符可确定MutableRealmInteger是否处于一致状态。 请特别注意,对托管MutableRealmInteger的引用保留对其所属模型对象的引用。 例如在以下代码中:

     MutableRealmInteger counter = realm.where(Users.class).findFirst().counter; 
     
    counter包含对其从中获取User模型对象的引用。 直到对两者的所有引用都无法访问之前,才能对两者进行 GC。
    • 方法详细信息

      • 的值

        public static MutableRealmInteger valueOf​(Long value)
        使用指定的初始值创建一个新的非托管MutableRealmInteger
        参数:
        value - 初始值。
      • ofNull

        public static MutableRealmInteger ofNull()
        创建一个新的非托管MutableRealmInteger ,其值为null
      • 的值

        public static MutableRealmInteger valueOf​(long value)
        使用指定的初始值创建一个新的非托管MutableRealmInteger
        参数:
        value - 初始值。
      • 获取

        @Nullable
        public abstract Long get()
        获取MutableRealmInteger值。 该值可以为 null。
        返回:
        值。
      • public abstract void set​(@Nullable
                                 Long newValue)
        设置MutableRealmInteger值。 调用set会强制将MutableRealmInteger设置为提供的值。 执行此操作会消除在调用set之前感知的对increment(long)decrement(long)的任何调用的影响。
        参数:
        newValue — 新值。
      • 增量

        public abstract void increment​(long inc)
        递增MutableRealmInteger ,添加参数的值。 所有设备的递增/递减都会反映在新值中,并且保证收敛。
        参数:
        inc - 要添加到MutableRealmInteger的数量。
      • 递减

        public abstract void decrement​(long dec)
        递减MutableRealmInteger ,即减去参数的值。 所有设备的递增/递减都会反映在新值中,并且保证收敛。
        参数:
        dec - 要从MutableRealmInteger中减去的数量。
      • IsNull

        public final boolean isNull()
        返回:
        当且仅当get()返回null时才为 true。
      • compareTo

        public final int compareTo​(MutableRealmInteger o)
        MutableRealmInteger严格按其值进行比较。 Null 是MutableRealmIntegernull的合法值 < 任何非null
        指定者:
        compareTo 在接口中 Comparable<MutableRealmInteger>
        参数:
        o - 比较目标
        返回:
        -1、0 或 1,具体取决于此对象的值是 <、= 还是 > 目标的值。
      • hashCode

        public final int hashCode()
        MutableRealmInteger的哈希码正是其值的哈希码。
        覆盖:
        hashCode 课堂上 Object
        返回:
        如果目标具有相同的值,则为 true。
      • 等于

        public final boolean equals​(Object o)
        当且仅当两个MutableRealmIntegerlongValues相等时,它们才是.equals
        覆盖:
        equals 课堂上 Object
        参数:
        o - 比较目标
        返回:
        如果目标具有相同的值,则为 true。