嘿,我正在使用一个模型作为 DTO、JsonCreator 和 Percelize
我的问题是我想使用多态性(反汇编公共(public)部分)并且不知道如何在 中编写它 Kotlin .
@Parcelize
@Entity
open class Location (var lat: Double = 0.0, var lng: Double = 0.0) :Parcelable
@Parcelize
@Entity
class MapsMarker(lat: Double, lng: Double, var name: String): Location(lat, lng), Parcelable
这里的一个问题是编译喊叫声
Parcelizable constructor parameter should be "var or val"
对于字段
lat
, lng
的 MapsMarker
.我正在使用继承,所以我不能使用 val,因为我将覆盖
Location
的属性类(class)。我也不想要我的房间 @Entity 将有重复的字段。如果有人知道答案,请帮助我;)
最佳答案
@Parcelize 不能很好地处理继承 issue link .您仍然可以使用提到的自定义包裹器 here
<<<<与您的问题无关,但考虑试一试>>>>
您的 MapsMarker 类违反了 is a
关系-> MapsMarker 是一个位置?
它不应该从 Location 继承,而是更喜欢组合 -> MapsMarker has a
地点
@Parcelize
@Entity
class MapsMarker(val location: Location, var name: String): Parcelable
您可以找到许多详细介绍类(class)设计的博客。 This是我现在得到的第一个相关的谷歌结果。
关于android - 将 Kotlin @Parcelize 与多态一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47412201/