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

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

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

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

最佳答案

使用nestedClasses中的 kotlin-reflect :

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

或者,按照@ s1m0nw1的建议,使用Java反射,并根据需要使用 Class KClass转换回.kotlin:
Father::class.java.classes.first { it.simpleName == "Child" }.kotlin

10-08 16:28