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 构造函数参数应该是“ var或val ”
对于字段lat,lngof MapsMarker。
我正在使用继承,所以我不能使用 val,因为我将覆盖Location类的属性。我也不希望我的房间@Entity 有重复的字段。
如果有人知道答案,请帮助我;)
@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)
您可以找到许多详细介绍类设计的博客。这是我现在得到的第一个相关的谷歌结果。
| 归档时间: |
|
| 查看次数: |
528 次 |
| 最近记录: |