gpt4 book ai didi

reflection - Kotlin:如何在包上使用反射?

转载 作者:行者123 更新时间:2023-12-03 19:46:58 28 4
gpt4 key购买 nike

如何对包级函数、成员等使用反射?尝试访问 javaClassclass 不起作用,package 也不起作用。

最佳答案

Kotlin 尚不支持对顶级函数或属性的反射,但计划在 future 进行。目前唯一支持的特性允许你获取对应于给定 Java 反射对象的 Kotlin 反射对象,需要你事先使用 Java 反射:

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

    要使用它们,首先必须通过 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)
    ...
    }

    关于reflection - Kotlin:如何在包上使用反射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33907095/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com