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用户:可变用户
):可包裹
用户也应该可以打包。当你拆开汽车时,你可能同时拥有这两个信息,或者只有其中一个信息。用户也应该是可包裹的。当你拆开这辆车时,你可能同时拥有这两个信息,或者只有其中一个信息。