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

Android kotlin:数据类中的可变属性类型,android,kotlin,parcelable,data-class,Android,Kotlin,Parcelable,Data Class,我有以下数据类实现了Parcelable: data class Car( val createdAt: String? = "", val updatedAt: String? = "", val id: String? = "", val name: String? = "", val user: User? = User() ) 在这个数据类中,用户属性有时可以是用户的id(字符串),有时可以是用户对象本身 有没有办法实现Parcelable并指示

我有以下数据类实现了
Parcelable

data class Car(
    val createdAt: String? = "",
    val updatedAt: String? = "",
    val id: String? = "",
    val name: String? = "",
    val user: User? = User()
)
在这个数据类中,
用户
属性有时可以是用户的id(字符串),有时可以是用户对象本身


有没有办法实现Parcelable并指示值可以是字符串或对象?(另一个数据模型)

不太确定这是否是您问题的正确答案,但我认为密封类可能会帮助您。 基本上,您可以定义一个
MutableUser
(User或string),MutableUser的每个子类都应该实现
Parcelable

密封类可变用户:可包裹{
@包裹
类UserAttribute(val user:user):MutableUser()
@包裹
类SimpleAttribute(val userId:String):MutableUser()
}
然后,您可以在您的汽车数据模型中使用此
MutableUser
,如下所示:

@Parcelize
数据级汽车(
val createdAt:字符串?=“”,
val updatedAt:字符串?=“”,
val id:字符串?=“”,
val名称:字符串?=“”,
val用户:可变用户
):可包裹

不太确定这是否是您问题的正确答案,但我认为密封类可能会对您有所帮助。 基本上,您可以定义一个
MutableUser
(User或string),MutableUser的每个子类都应该实现
Parcelable

密封类可变用户:可包裹{
@包裹
类UserAttribute(val user:user):MutableUser()
@包裹
类SimpleAttribute(val userId:String):MutableUser()
}
然后,您可以在您的汽车数据模型中使用此
MutableUser
,如下所示:

@Parcelize
数据级汽车(
val createdAt:字符串?=“”,
val updatedAt:字符串?=“”,
val id:字符串?=“”,
val名称:字符串?=“”,
val用户:可变用户
):可包裹

用户也应该可以打包。当你拆开汽车时,你可能同时拥有这两个信息,或者只有其中一个信息。用户也应该是可包裹的。当你拆开这辆车时,你可能同时拥有这两个信息,或者只有其中一个信息。