将Kotlin的KClass转换为Java中的常规类

我正在尝试从Kotlin调用一个常规的Java方法,如下所示:

public  T proxy(KClass kClass) { // unfortunately nothing like getJavaClass() exists return (T) proxy(kClass.getJavaClass()); } public  T proxy(Class jClass) { return (T) context.getBean(jClass); } 

在Kotlin中,您可以在每个KClass上调用.java 。 这不是这种情况,我无法从KClass中提取Java类对象。 有没有办法做到这一点?

这个function确实存在,只是看起来没有,因为java是一个扩展属性。

使用方法JvmClassMappingKt.getJavaClass

在Kotlin中,扩展方法(和属性获取器/设置器)被实现为其包含类的static方法。 如果您查看.java的源代码( Ctrl + Q ),则可以看到它在JvmClassMapping.kt实现。

由于该函数是包级别的,并且没有包含对象,因此只将它放入文件[Filename]Kt ,在这种情况下,该[Filename]KtJvmClassMappingKt

这是这个扩展属性的来源:

 @Suppress("UPPER_BOUND_VIOLATED") public val  KClass.java: Class @JvmName("getJavaClass") get() = (this as ClassBasedDeclarationContainer).jClass as Class 

如您所见,该方法的名称在JVM上重命名为getJavaClass

在你的情况下,你可以尝试:

 public  T proxy(KClass kClass) { return (T) proxy(JvmClassMappingKt.getJavaClass(kClass)); }