如何在 Kotlin 中创建一个在 class 上运行的扩展函数?
How do I create an extension function in Kotlin, which operates on a class?
想象一下,我有这行代码:
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 classes:
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 是 class。
想象一下,我有这行代码:
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 classes:
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 是 class。