如何访问kotlin中的对象声明的对象成员

假设你有下面的嵌套对象声明:

object Father { val fathersField = "value" object Child { val childsField = 3.141592654 } } 

当我使用从Father开始的反射时,我只能找到字段fathersField但没有成员引用Child实例。

是否有可能通过反射找到这些内部对象的声明? 如果是的话,怎么样?

使用nestedClasses kotlin-reflect nestedClasseskotlin-reflect

 Father::class.nestedClasses.find { it.simpleName == "Child" } 

或者,如@ s1m0nw1建议的那样,使用Java反射,并根据需要使用.kotlinClass转换回KClass

 Father::class.java.classes.first { it.simpleName == "Child" }.kotlin 

而已:

 println(Father.javaClass.classes[0]) >> class packagepath.Father$Child