如何在Kotlin中创建一个在类上运行的扩展函数?
试想一下,我有这样的代码行:
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类。 下面为我编译扩展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是一个类。