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

时间:2017-08-18 13:09:57

标签: reflection kotlin

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

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

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

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

2 个答案:

答案 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