就像我有一个kotlin函数:
object KotlinFunc {
@JvmStatic
fun create(mycls: KClass<*>) {...}
}
Run Code Online (Sandbox Code Playgroud)
我想在Java代码中调用此函数,但这不起作用:
public void javaFunc() {
KotlinFunc.create(MyClass.class)
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*nov 13
在 Kotlin 中Class 有一个扩展属性.kotlin。
kotlin.jvm.JvmClassMapping.kt它在(源代码)中声明。
在 Java 中,它将看起来像<T> KClass<T> getKotlinClass(Class<T>)类中的静态方法kotlin.jvm.JvmClassMappingKt。
urg*_*ntx 10
您可以使用标准库以这种方式执行此操作:
KClass kotlinClass = Reflection.createKotlinClass(MyClass.class);
KotlinFunc.create(kotlinClass)
Run Code Online (Sandbox Code Playgroud)
可以通过在Java中使用以下代码来实现:
public static <T> KClass<T> getKClass(Class<T> cls){
return JvmClassMappingKt.getKotlinClass(cls);
}
Run Code Online (Sandbox Code Playgroud)
并且还必须确保kotlin-reflect在您的类路径中,例如:
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-reflect', version: '1.3.21'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
959 次 |
| 最近记录: |