在扩展函数中检索 class 的 return 值

Retrieve class of return value in extension function

我想替换这个函数:

fun <T : Parcelable> Parcel.readObject(result: Parcelable.Creator<T>): T {
    return this.readParcelable(result::class.java.classLoader) as T
}

具有如下功能:

fun <T : Parcelable> Parcel.readObject(): T {
    return this.readParcelable(T::class.java.classLoader) as T
}

所以我希望它检索 return 值的 class 并获取那个 class 的 classLoader。这可能吗?

您可以使用 reified 关键字来实现,如下所示:

inline fun <reified T : Parcelable> Parcel.readObject(): T {
    return this.readParcelable(T::class.java.classLoader) as T
}

您可以在 docs

中阅读有关 reified 参数的更多信息