Kotlin:我如何使用包装上的反射?

我如何使用包级函数,成员等的思考? 尝试访问javaClassclass不起作用, package也没有。

Kotlin尚未支持对顶级功能或属性的反思,但计划在未来进行。 目前唯一支持的功能允许您获取与给定Java反射对象相对应的Kotlin反射对象,因此需要事先使用Java反射:

  • kotlinFunction通过java.lang.reflect.Method实例或java.lang.reflect.Method实例返回一个kotlin.reflect.KFunction实例
  • kotlinProperty通过java.lang.reflect.Field实例返回一个kotlin.reflect.KProperty实例

要使用它们,您必须首先通过Java反射获取相应的方法或字段:

 package a import kotlin.reflect.jvm.* fun foo() {} fun reflectFoo() { // a.TestKt is the JVM class name for the file test.kt in the package a val c = Class.forName("a.TestKt") val m = c.getDeclaredMethod("foo") val f = m.kotlinFunction!! // f is a KFunction instance, so you can now inspect its parameters, annotations, etc. println(f.name) println(f.returnType) ... }