将java Class<>转换为kotlin的KClass<>
就像我哈瓦一个kotlin函数:
object KotlinFunc {
@JvmStatic
fun create(mycls: KClass<*>) {...}
}
我想在java代码中调用这个函数,但这不起作用:
public void javaFunc() {
KotlinFunc.create(MyClass.class)
}
就像我哈瓦一个kotlin函数:
object KotlinFunc {
@JvmStatic
fun create(mycls: KClass<*>) {...}
}
我想在java代码中调用这个函数,但这不起作用:
public void javaFunc() {
KotlinFunc.create(MyClass.class)
}
可以通过在Java中调用函数来实现:getKotlinClass
kotlin.jvm.JvmClassMappingKt.getKotlinClass(MyClass.class);
你可以像这样调用你的函数:
kotlin.reflect.KClass<MyClass> kClass = kotlin.jvm.JvmClassMappingKt.getKotlinClass(MyClass.class);
KotlinFunc.create(kClass);
并确保它位于您的类路径中,例如:kotlin-reflect
与Gradle Kotlin:
dependencies {
...
implementation(kotlin("reflect"))
...
}
与Gradle Groovy:
dependencies {
...
implementation 'org.jetbrains.kotlin:kotlin-reflect'
...
}
在 Kotlin 中有一个扩展属性 .kotlin
。Class
它是在(源代码)中声明的。kotlin.jvm.JvmClassMapping.kt
在Java中,它将在类中显示为静态方法。<T> KClass<T> getKotlinClass(Class<T>)
kotlin.jvm.JvmClassMappingKt