RealmObject 的 Kotlin 数据 class

Kotlin data class of RealmObject

我正在使用 Kotlin 和 Realm 写数据 class

data class AuthToken(val register: Boolean,
                     val token: String,
                     val tokenSecret: String,
                     val user: AuthUser)

我要把数据存到db,所以我用Realm来存。但正如我们所知,如果我想将 class 保存到 Realm,AuthToken class 必须扩展 RealmObject.

这就是问题所在,Kotlin 说数据 classes 不能扩展 classes。 所以我放弃了数据 class,只是使用普通的 Kotlin class 作为模型然后另一个问题来了:

Kotlin class 没有 getter 或 setter。正如我们所知,Realm class 必须将所有 属性 设置为私有并写入 getter 和 setter.

现在我想知道如何解决这个问题。

any class 中的任何 Kotlin 属性 都有一个 getter 和一个 setter。所以我相信你的代码应该按照你自己的建议工作(没有 data 修饰符)。

https://kotlinlang.org/docs/reference/data-classes.html#data-classes https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html#properties

P.S。我同意有关属性的文档在该主题上不清楚

Realm 目前不支持数据 类。您可以在此处查看如何在 Kotlin 中编写 Realm 兼容模型 类 的示例:https://github.com/realm/realm-java/tree/master/examples/kotlinExample/src/main/kotlin/io/realm/examples/kotlin/model

public open class Person(
        @PrimaryKey public open var name: String = "",
        public open var age: Int = 0,
        public open var dog: Dog? = null,
        public open var cats: RealmList<Cat> = RealmList(),
        @Ignore public open var tempReference: Int = 0,
        public open var id: Long = 0
) : RealmObject() {