java - 如何在 Kotlin 中创建对类进行操作的扩展函数?

标签 java mockito kotlin kotlin-extension

想象一下,我有这行代码:

import org.mockito.Mockito
val mock = Mockito.mock(Sim2ParametersProvider::class.java)

我希望能够这样写:

val mock = Sim2ParametersProvider::class.mock()

我该怎么做?

我试过了

fun <T : kotlin.Any> kotlin.reflect.KClass<T>.mock() = Mockito.mock(this)

但它给了我编译器错误。

最佳答案

看起来您有点混淆了 KClass 和 java Class。以下为我编译,以扩展 java 类:

fun <T> Class<T>.mock() = Mockito.mock(this)
val mock1 = FooClass::class.java.mock()

下面的代码也为我编译,扩展了 Kotlin KClass:

fun <T: Any> KClass<T>.mock() = Mockito.mock(this.java)
val mock2 = FooClass::class.mock()

当然假设 FooClass 是一个类。

关于java - 如何在 Kotlin 中创建对类进行操作的扩展函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36614177/

相关文章:

java.lang.NullPointerException 第 53 行

java - OpenCSV所有数据存储在单行版本(5.1)和数据丢失

unit-testing - 在 Spring Boot Camel 中模拟 RedisTemplate

arrays - 如何在Kotlin中将String转换为String数组?

java - 添加按下开始按钮后 Android 相机应用程序的录制时间

java - 我正在使用 DefineClass() 从 C 定义一个 Java 类,但得到 UnsatisfiedLinkError

java - 使用 Mockito 测试返回对象的方法

java - 单元测试断言与 Mockito.verify()

Kotlin elvis 运算符不适用于 map.get()

date - 如何使用 Java Date 对象使 Kotlin 中的数据类不可变?