kotlin: изменяемый тип свойства в классе данных - PullRequest
1 голос
/ 27 февраля 2020

У меня есть следующий класс данных, который реализует Parcelable:

data class Car(
    val createdAt: String? = "",
    val updatedAt: String? = "",
    val id: String? = "",
    val name: String? = "",
    val user: User? = User()
)

В этом классе данных иногда атрибуты user могут быть идентификатор пользователя (String ) и иногда это может быть сам объект пользователя .

Есть ли способ реализовать Parcelable и указывает, что значение может быть либо String, либо Object? (Другая модель данных)

1 Ответ

0 голосов
/ 27 февраля 2020

Не совсем уверен, что это правильный ответ на ваш вопрос, но я думаю, что закрытый класс может вам помочь. По сути, вы можете определить MutableUser (Пользователь или строка), и каждый подкласс MutableUser должен реализовывать Parcelable.

sealed class MutableUser : Parcelable {
    @Parcelize
    class UserAttribute(val user: User) : MutableUser()

    @Parcelize
    class SimpleAttribute(val userId: String) : MutableUser()
}

Затем вы можете использовать это MutableUser в вашей модели данных автомобиля, как показано ниже:

@Parcelize
data class Car(
   val createdAt: String? = "",
   val updatedAt: String? = "",
   val id: String? = "",
   val name: String? = "",
   val user: MutableUser
) : Parcelable
...