¿Cómo puedo get una reference a un object Kotlin por su nombre?

Si tengo una statement de object de nivel superior

package com.example object MyObject {} 

¿cómo puedo convertir la cadena com.example.MyObject en una reference a MyObject ?

Si tiene kotlin-reflect en classpath, puede usar la propiedad KClass de KClass

 fun main(args: Array<String>) { val fqn = "com.example.MyObject" val clz: Class<*> = Class.forName(fqn) val instance = clz.kotlin.objectInstance println(instance) // com.example.MyObject@71623278 } 

si no tienes kotlin-reflect entonces puedes hacerlo en un simple y antiguo path de java

 fun main(args: Array<String>) { val fqn = "com.example.MyObject" val clz: Class<*> = Class.forName(fqn) val field: Field = clz.getDeclanetworkingField("INSTANCE") val instance = field.get(null) println(instance) // com.example.MyObject@76ed5528 } 

puedes usar la reflexión de kotlin, por ejemplo:

 val it = Class.forName("com.example.MyObject").kotlin.objectInstance as MyObject; 

Igual que un código de Java, necesita usar Class.forName("com.example.MyObject") . Ahora tienes una class Java, pero usando la extensión kotlin , se convierte a la class Kotlin. Class.forName("com.example.MyObject").kotlin

  • Quiero detectar si una class JVM es una class Kotlin o no
  • Implementando una interfaz de kotlin en java
  • Kotlin language obtiene class en time de ejecución
  • Kotlin: ¿Cómo se accede a los methods get y setValue de un delegado?
  • ¿Cómo puedo get el nombre de una propiedad de Kotlin?
  • Manera idiomática de invocar methods a través de la reflexión en Kotlin
  • Kotlin: isAssignableFrom y reflexiones del tipo de reflexión
  • Kotlin, cómo recuperar el valor del campo a través de la reflexión
  • ¿Cómo get un KType en Kotlin?
  • Los literales de class Kotlin con el lado izquierdo vacío aún no son compatibles.
  • ¿Cómo get una KClass de Array?