【问题标题】:using Kotlin @Parcelize together with polymorphism将 Kotlin @Parcelize 与多态一起使用
【发布时间】:2018-05-04 20:43:53
【问题描述】:

嘿,我使用一个模型作为 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 构造函数参数应该是“varval

对于latlng 的字段MapsMarker

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

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

【问题讨论】:

  • 你的问题解决了吗?

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


【解决方案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 是我现在得到的第一个相关的谷歌结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    相关资源
    最近更新 更多