Java 如何从字符串从Kotlin类转换到接口/类?

Java 如何从字符串从Kotlin类转换到接口/类?,java,jvm,kotlin,Java,Jvm,Kotlin,我得到一个带有class.forName(“classname”).kotlin的类 我知道这个类实现了一个接口,非常简单(如果您有一个与我所想的不同的解决方案,它也会很好地工作) 当我试图强制转换我的类时,使用函数,如下所示 val result = (Class.forName("classname").kotlin as Runner).run() 我得到以下错误: kotlin.reflect.jvm.internal.KClassImpl cannot be cast to Runn

我得到一个带有
class.forName(“classname”).kotlin
的类

我知道这个类实现了一个
接口
,非常简单(如果您有一个与我所想的不同的解决方案,它也会很好地工作)

当我试图强制转换我的类时,使用函数,如下所示

val result = (Class.forName("classname").kotlin as Runner).run()
我得到以下错误:

kotlin.reflect.jvm.internal.KClassImpl cannot be cast to Runner
有没有办法让这一切顺利?我还尝试了
Class.forName(“classname”).kotlin.functions
,然后尝试从那里执行该函数,但没有成功


如果您知道这个问题的Java解决方案(从类名调用函数),那么听到这个消息也会很高兴。

您遇到的问题是
class.forName(“…”).kotlin
返回一个,它只表示一个类,而不是您引用的类的实例。要创建该类的实例,可以使用:


请注意,要使
createInstance
正常工作,该类需要一个无参数调用的构造函数(即一个没有参数的构造函数,或者一个对其所有参数都有默认值的构造函数)。

谢谢,伙计!这是非常明显的,但我无法想象,因为代码中的实例是通过创建类来创建的,这里的情况并非如此。
kotlin.reflect.jvm.internal.KClassImpl cannot be cast to Runner
val kclass = Class.forName("classname").kotlin
val instance = kclass.createInstance() as Runner

println(instance.run())