Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics 如何使用原始类型在kotlin中调用函数_Generics_Kotlin - Fatal编程技术网

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
}