是否可以将反射中的所有可能类型用作泛型类型?
Is it possible to use all possible types from reflection as generic type?
我正在尝试使用反射自动为某些 类 创建 savedStateHandle。
fun <T> KProperty1<T, *>.argFrom(handle: SavedStateHandle) =
when (this.returnType.javaType) {
String::class.java -> handle.get<String>(this.name)
Int::class.java -> handle.get<Int>(this.name)
Uri::class.java -> handle.get<Uri>(this.name)
else -> throw RuntimeException("Type not implemented yet")
}
如您所见,如果类型是例如 String
那么我希望 return 类型的 get 函数是 String
并且在这样做时我必须定义每个手动单例。
如果我能做这样的事情就好了。
fun <T> KProperty1<T, *>.argFrom(handle: SavedStateHandle) =
handle.get<this.returnType.javaType>(this.name)
您需要 属性 的 return 类型的类型参数。然后您可以使用该类型参数指定所需的 return 类型 get
:
fun <T, V> KProperty1<T, V>.argFrom(handle: SavedStateHandle) =
handle.get<V>(this.name)
我正在尝试使用反射自动为某些 类 创建 savedStateHandle。
fun <T> KProperty1<T, *>.argFrom(handle: SavedStateHandle) =
when (this.returnType.javaType) {
String::class.java -> handle.get<String>(this.name)
Int::class.java -> handle.get<Int>(this.name)
Uri::class.java -> handle.get<Uri>(this.name)
else -> throw RuntimeException("Type not implemented yet")
}
如您所见,如果类型是例如 String
那么我希望 return 类型的 get 函数是 String
并且在这样做时我必须定义每个手动单例。
如果我能做这样的事情就好了。
fun <T> KProperty1<T, *>.argFrom(handle: SavedStateHandle) =
handle.get<this.returnType.javaType>(this.name)
您需要 属性 的 return 类型的类型参数。然后您可以使用该类型参数指定所需的 return 类型 get
:
fun <T, V> KProperty1<T, V>.argFrom(handle: SavedStateHandle) =
handle.get<V>(this.name)