【问题标题】:kotlin: Mutable property type in a data classkotlin:数据类中的可变属性类型
【发布时间】:2020-02-27 14:42:03
【问题描述】:

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

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

在这个数据类中,有时user 属性可以是用户的ID(字符串),有时它可能是用户对象本身。 p>

有没有办法实现 Parcelable 并指示该值可以是 String 或 Object ? (另一种数据模型)

【问题讨论】:

  • 用户也应该是可包裹的。当您对 Car 进行拆包时,您可能同时拥有这两种信息,也可能只有其中一种信息。

标签: android kotlin parcelable data-class


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2020-09-13
    相关资源
    最近更新 更多