como si tuviera una función kotlin:
object KotlinFunc { @JvmStatic fun create(mycls: KClass<*>) {...} }Quiero invocar esta función en código Java, pero esto no funciona:
public void javaFunc() { KotlinFunc.create(MyClass.class) }Es posible llamando a la función getKotlinClass en Java:
kotlin.jvm.JvmClassMappingKt.getKotlinClass(MyClass.class);puedes invocar tu función así:
kotlin.reflect.KClass<MyClass> kClass = kotlin.jvm.JvmClassMappingKt.getKotlinClass(MyClass.class); KotlinFunc.create(kClass); y asegúrese de que kotlin-reflect esté en su classpath, por ejemplo:
con Gradle Kotlin:
dependencies { ... implementation(kotlin("reflect")) ... }con Gradle Groovy:
dependencies { ... implementation 'org.jetbrains.kotlin:kotlin-reflect' ... }Puedes hacerlo de esta manera usando la biblioteca estándar:
KClass kotlinClass = Reflection.createKotlinClass(MyClass.class); KotlinFunc.create(kotlinClass)En Kotlin Class tiene una propiedad de extensión .kotlin .
Se declara en kotlin.jvm.JvmClassMapping.kt ( código fuente ).
En Java se verá como un método estático <T> KClass<T> getKotlinClass(Class<T>) en la clase kotlin.jvm.JvmClassMappingKt .