【发布时间】:2021-04-12 19:38:55
【问题描述】:
我已经定义了一个内联方法,它提供了一种反序列化片段参数的方法。
我需要检查请求的Arg 类型以选择反序列化方法。
inline fun <reified Arg : Any?> Fragment.navArgParser(
crossinline parcelCreatorProducer: () -> Parcelable.Creator<Arg>
) = NavArgsLazy<Arg?>({
arguments ?: throw IllegalStateException("Fragment $this has null arguments")
}) {
when {
Arg is Parcelable -> // ISSUE
NavArgParser.deserializeData<Arg>(it, parcelCreatorProducer.invoke())
Arg is Serializable -> // ISSUE
NavArgParser.deserializeData<Serializable>(it) as Arg
else ->
throw IllegalStateException("${Arg::class.java.simpleName} must implement Parcelable or Serializable")
}
}
如何检查 Arg 是 Parcelable 还是 Serializable?
【问题讨论】:
标签: android kotlin generics parcelable kotlin-reified-type-parameters