Generics 如何使用原始类型在kotlin中调用函数
函数声明类型参数时:Generics 如何使用原始类型在kotlin中调用函数,generics,kotlin,Generics,Kotlin,函数声明类型参数时: fun <T> typedFunction(value: T, option: Option<T>) { ... } 但随后它给出了一个错误:“不允许对函数和属性的类型参数进行投影”因为Kotlin没有原始类型,也没有为函数调用提供星形投影等价物,所以应该为T提供一个具体的类型 您可以将选项参数强制转换为选项,使T变为任意: val m: Map<Option<*>, *>? = ... for ((key, value)
fun <T> typedFunction(value: T, option: Option<T>) { ... }
但随后它给出了一个错误:“不允许对函数和属性的类型参数进行投影”因为Kotlin没有原始类型,也没有为函数调用提供星形投影等价物,所以应该为
T
提供一个具体的类型
您可以将选项
参数强制转换为选项
,使T
变为任意
:
val m: Map<Option<*>, *>? = ...
for ((key, value) in m!!) {
@Suppress("unchecked")
typedFunction(key as Option<Any>, value) // inferred T := Any
}
val m:Map?=。。。
对于m中的((键,值)!!){
@抑制(“未选中”)
typedFunction(键作为选项,值)//推断的T:=Any
}
难道你不能让编译器推断吗<代码>类型功能(…)@s1m0nw1否,它们被推断为不兼容的选项
和任何
val m: Map<Option<*>, *>? = ...
for ((key, value) in m!!) {
typedFunction<*>(key, value)
// ^^^ ERROR!!
}
val m: Map<Option<*>, *>? = ...
for ((key, value) in m!!) {
@Suppress("unchecked")
typedFunction(key as Option<Any>, value) // inferred T := Any
}