android - 将 Kotlin @Parcelize 与多态一起使用

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

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

我正在使用继承,所以我不能使用 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/

相关文章:

java - onActivityResult 未从修复的警报对话框中触发

android - Jetpack Compose @PreviewParameter 导致预览消失

android - RecyclerView 仅显示来自 Firebase 的一项

java - Android MVVM RecyclerView ClickListener Kotlin 到 Java 转换

android - 无法重新创建丢失的调试 keystore ?

java - 如何使用不在 "Query-Collection"中的值对 Firestore RecyclerView 项目进行排序? (社交排行榜)

android - 如果值在OpenAPI生成器的Moshi中不匹配,如何退回枚举

java - 每天在特定时间将项目添加到房间数据库

android - Regexp_substr() 函数等效于 Android 中的 RoomDatabase

java - 有没有办法为房间持久性库创建通用 DAO 类