Класс данных Kotlin для RealmObject
Я использую Kotlin и Realm для записи класса данных
data class AuthToken(val register: Boolean,
val token: String,
val tokenSecret: String,
val user: AuthUser)
Мне нужно сохранить данные в db, поэтому я использую Realm для его сохранения. Но, как мы знаем, если я хочу сохранить класс в Realm, класс AuthToken
должен расширять RealmObject
.
В этой проблеме Котлин говорит, что классы данных не могут расширять классы.
поэтому я отказываюсь от класса данных, просто используя обычный класс Kotlin в качестве модели, возникает еще один вопрос:
Класс Kotlin не имеет геттера или сеттера. Как мы знаем, класс Realm должен установить все свойство private и записать getter и setter.
Теперь мне интересно, как решить проблему.
Ответы
Ответ 1
В настоящее время Realm не поддерживает классы данных. Вы можете увидеть пример того, как писать классы совместимых с Realm классов в Kotlin здесь: 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() {
Ответ 2
Любое свойство 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. Я согласен с тем, что документы о свойствах неясны по этому вопросу.