【问题标题】:Is there any benefit to implementing RealmModel instead of extending RealmObject in Realm?实现 RealmModel 而不是在 Realm 中扩展 RealmObject 有什么好处吗?
【发布时间】:2016-09-15 20:33:28
【问题描述】:

Realm 中,为了使对象能够持久化,它必须实现RealmModel 或扩展RealmObject。使用其中一个有什么好处吗?

realm docs 中所说的只是:

扩展 RealmObject 基类的另一种方法是实现 RealmModel 接口并添加 @RealmClass 注解。

RealmObject 上所有可用的方法都可以通过静态方法使用。

【问题讨论】:

    标签: java android realm


    【解决方案1】:

    考虑到extending any non-RealmObject classes is not possible even if you're implementing RealmModel and adding @RealmClass,在我看来,你只会通过强迫自己使用RealmObject.isValid(realmObject) 而不是realmObject.isValid() 而获得额外的复杂性,而使用extends RealmObject 自然是免费获得的。

    所以不,你应该坚持扩展RealmObject。使用 implements RealmModel 不会给您带来额外的好处。

    【讨论】:

    • 目前RealmModel 的唯一好处是您可以拥有自己的自定义isValid()。如果你扩展RealmObject,你自己的类中不能有这样的方法。
    • 我猜isManaged()isLoaded()(和deleteFromRealm())也一样。
    • 是的,它适用于RealmObject 上的所有方法,因为我们将它们全部设为final
    • 您可以将 Parcelable 与 RealModel 一起使用,这难道不是一个优势吗?
    • 值得一提的是,使用 Kotlin,您可以导入 import io.realm.kotlin.*,它为您提供了 RealmModel 上的所有方法,这些方法在 RealmObject 上。所以例如你可以myModel.deleteFromRealm()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 2020-12-22
    • 2012-11-29
    相关资源
    最近更新 更多