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) ... } 
  • Kotlin invoke getter / setter reflexivamente
  • ¿Cómo uso el object Kotlin por reflexión?
  • Acceda al tipo de delegado de Kotlin sin una instancia
  • Reflexión de KFlin KFunction - get valores de parameters
  • Reflexión de Kotlin: compruebe si la propiedad tiene tipo
  • Implementando una interfaz de kotlin en java
  • Llamadas a function de logging usando reflexión en kotlin
  • ¿Por qué == e iguales producen resultados diferentes?
  • ¿Cómo get la reference de class de KParameter en kotlin?
  • ¿Cómo get los nombres de los parameters a través de la reflexión en kotlin?
  • java.lang.IllegalArgumentException: Callable espera 4 arguments, pero se proporcionaron 3