Kotlin中参数化类的类文字语法

Kotlin中参数化类的类文字语法,kotlin,Kotlin,我试图模拟Kotlin中的一个函数 Mockito.mock(Function2<Int, Int, Unit>::class.java) 错误是正确的,您提供的解决方案是预期的解决方案。这里的基本原理是,由于泛型类型参数在运行时没有具体化,因此只能获取表示类的对象,而不是类型 不过,还有一个解决方法:如果通过具体化类型参数使用类文字语法,在调用站点用所需类型替换它,则会得到相同的KClass对象,但使用您提供的实际参数。在您的情况下,可以声明以下函数: inline fun &l

我试图模拟Kotlin中的一个函数

Mockito.mock(Function2<Int, Int, Unit>::class.java)

错误是正确的,您提供的解决方案是预期的解决方案。这里的基本原理是,由于泛型类型参数在运行时没有具体化,因此只能获取表示类的对象,而不是类型

不过,还有一个解决方法:如果通过具体化类型参数使用类文字语法,在调用站点用所需类型替换它,则会得到相同的
KClass
对象,但使用您提供的实际参数。在您的情况下,可以声明以下函数:

inline fun <reified T : Any> mock(): T = Mockito.mock(T::class.java) as T
inline fun mock():T=Mockito.mock(T::class.java)作为T
然后像这样使用它:

val f = mock<(Int, Int) -> Unit>()
val f=mock Unit>()
val f = mock<(Int, Int) -> Unit>()