使用Kotlin @Parcelize和多态性

时间:2017-11-21 11:37:29

标签: android kotlin android-room kotlin-android-extensions

嘿我正在使用一个模型作为 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

这里的问题是编译喊叫

  

Parcelizable构造函数参数应为“ var val

表示lat的字段lngMapsMarker

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

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

1 个答案:

答案 0 :(得分:1)

@Parcelize 不适用于继承issue link。您仍然可以像上面提到的here

那样使用自定义包裹

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

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

它不应继承自Location,而应优先使用组合-> MapsMarker has a Location

@Parcelize
@Entity
class MapsMarker(val location: Location, var name: String): Parcelable

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