kotlin:数据类中的可变属性类型

问题描述 投票:1回答:1

我有以下实现Parcelable的数据类:

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

在此数据类中,有时user属性可以是用户的ID(字符串),有时可以是用户对象本身

是否有任何方法可以实现Parcelable,并指示该值可以是String还是Object? (另一个数据模型)

android kotlin parcelable data-class
1个回答
0
投票

不太确定这是否是您问题的正确答案,但我认为密封的课程可能会对您有所帮助。基本上,您可以定义一个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
© www.soinside.com 2019 - 2024. All rights reserved.