【发布时间】:2020-05-13 09:25:26
【问题描述】:
我有一个 Result parcelable 类,它应该用作密钥和可打包数据的容器。我是这样定义的:
@Parcelize
open class Result<out T : Parcelable>(val key: String, val data: T?) : Parcelable
问题是,在定义子类时,为了让@Parcelize 工作,我需要在构造函数中将val 添加到对象中,本质上是使数据被两次写入parcel 中。这是一个例子:
@Parcelize
class LessonFinishedResult(private val lessonActivityData: LessonActivityData) :
Result<LessonActivityData>(LessonActivityData.LESSON_KEY, lessonActivityData), Parcelable
我想要这个:
@Parcelize
class LessonFinishedResult(lessonActivityData: LessonActivityData) :
Result<LessonActivityData>(LessonActivityData.LESSON_KEY, lessonActivityData), Parcelable
但这是不允许的。有没有聪明的方法可以解决这个问题?还有一件事,有没有办法可以避免手动使用 Result<LessonActivityData> 并从传递的对象中自动推断出类型?
谢谢!
【问题讨论】:
标签: android generics kotlin parcelable