Kotlin中参数化类的类字面语法
我试图嘲笑Kotlin的一个function
Mockito.mock(Function2::class.java)
它说: “只有类才允许在类文字的左边” 。 获得对静态已知参数化类的引用的正确方法是什么? 现在我生活在一个丑陋的演员
Mockito.mock(Function2::class.java) as (Int, Int) -> Unit
错误是正确的,你提供的解决方案是预期的。 这里的基本原理是,由于genericstypes参数在运行时没有被指定,所以只能获得表示类的对象,而不是types 。
有一个解决方法:如果你通过一个指定的types参数使用类字面值语法,用你想要的types替换它,你将得到相同的KClass
对象,但是你提供了实际的参数。 在你的情况下,你可以声明以下函数:
inline fun mock(): T = Mockito.mock(T::class.java) as T
像这样使用它:
val f = mock<(Int, Int) -> Unit>()
- Gradle sinc以kotlin扩展失败。 输入字符串:“”在build.gradle文件模块(应用程序)
- 将java lambda传递给kotlin fun时,“Function0不是函数接口”错误
- “这个项目附带的一些Kotlin库有不支持的格式。请更新库或插件”
- Array上的函数average()不起作用
- Kotlin – 高阶函数和types不匹配
- 带有产品风味和Kotlin的ClassNotFoundException
- Android Kotlin nextin排除了最后的随机食物
- 如何通过reflection来使用Kotlin对象
- 在使用maven时,Kotlin不是从src / main / kotlin编译的