Kotlin: ¿Cómo puedo usar la reflexión en los packages?

¿Cómo puedo usar la reflexión en las funciones a nivel de package, miembros, etc.? Intentar acceder a javaClass o class no funciona, tampoco lo hace el package .

La reflexión sobre funciones o properties de nivel superior aún no se admite en Kotlin, pero está planificada para el futuro. Las únicas características que son compatibles en este momento le permiten get objects de reflexión de Kotlin correspondientes a los objects de reflexión de Java dados, lo que requiere que utilice la reflexión de Java de antemano:

  • kotlinFunction devuelve una instancia de kotlin.reflect.KFunction por una instancia de java.lang.reflect.Method o por una instancia de java.lang.reflect.Constructor
  • kotlinProperty devuelve una instancia de kotlin.reflect.KProperty mediante una instancia de java.lang.reflect.Field

Para usarlos, primero debe get el método o campo correspondiente con la reflexión de 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.getDeclanetworkingMethod("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) ... } 
  • Usar reflexión para pasar y modificar una primitiva sin usar matriz
  • ¿Cómo get un KType en Kotlin?
  • Determinar si una instancia es una instancia de una class de datos
  • ¿Cómo obtengo el valor de una propiedad con reflection?
  • Obtén la function por nombre dinámicamente en Kotlin
  • ¿El comstackdor de Kotlin siempre conserva los nombres de los parameters en bytecode?
  • ¿Cómo get una class de time de ejecución de una variable en Kotlin?
  • ¿Cómo get una KClass de Array?
  • Obteniendo la class actual
  • ¿Cómo hacer inferencia tipo Kotlin desde la reflexión KClass?
  • Crear una nueva instancia de una KClass