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