¿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

  • ¿Cómo establecer el valor de propiedad delegada por reflexión en kotlin?
  • Reflexión de Kotlin: compruebe si la propiedad tiene tipo
  • Implementando una interfaz de kotlin en java
  • ¿Puedo get una KFunction de una variable del tipo de function en Kotlin?
  • ¿Cómo get una KClass de Array?
  • ¿Cómo puedo crear una instancia de un object usando valores de parameters de constructor pnetworkingeterminados en Kotlin?
  • Obtén la function por nombre dinámicamente en Kotlin
  • Kotlin enlazó la incoinheritance de las references invocables
  • ¿Cómo obtengo una KProperty1 de una KProperty0?
  • Kotlin: comparar los valores de propiedad de diferentes objects objective con (fuera) reflexión
  • Reflexión de KFlin KFunction - get valores de parameters