使用 Kotlin @Parcelize 和多态性

mur*_*urt 6 android kotlin kotlin-android-extensions android-room

嘿,我使用一种模型作为DTO、JsonCreator 和 Percelize 我的问题是我想使用多态性(反汇编公共部分)并且不知道如何在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
Run Code Online (Sandbox Code Playgroud)

这里的一个问题是编译喊叫

Parcelizable 构造函数参数应该是“ varval

对于字段latlngof MapsMarker

我正在使用继承,所以我不能使用 val,因为我将覆盖Location类的属性。我也不希望我的房间@Entity 有重复的字段。

如果有人知道答案,请帮助我;)

Jeg*_*abu 1

@Parcelize不能很好地处理继承问题 link。您仍然可以像这里提到的那样拥有自定义包裹机

<<<<与您的问题无关,但考虑一下>>>>

您的 MapsMarker 类违反了is a关系 -> MapsMarker 是一个位置?

它不应该从 Location 继承,而是更喜欢合成 -> MapsMarker has aLocation

@Parcelize
@Entity
class MapsMarker(val location: Location, var name: String): Parcelable
Run Code Online (Sandbox Code Playgroud)

您可以找到许多详细介绍类设计的博客。是我现在得到的第一个相关的谷歌结果。