如何访问kotlin中的对象声明的对象成员
假设你有下面的嵌套对象声明:
object Father { val fathersField = "value" object Child { val childsField = 3.141592654 } }
当我使用从Father
开始的反射时,我只能找到字段fathersField
但没有成员引用Child
实例。
是否有可能通过反射找到这些内部对象的声明? 如果是的话,怎么样?
使用nestedClasses
kotlin-reflect
nestedClasses
的kotlin-reflect
:
Father::class.nestedClasses.find { it.simpleName == "Child" }
或者,如@ s1m0nw1建议的那样,使用Java反射,并根据需要使用.kotlin
将Class
转换回KClass
:
Father::class.java.classes.first { it.simpleName == "Child" }.kotlin
而已:
println(Father.javaClass.classes[0]) >> class packagepath.Father$Child