我如何在 Kotlin 中对 属性 的 属性 进行反思?

How do I get a reflection on a property's property in Kotlin?

假设我们有一个 class 和一个 属性 子类。

class TestClass(val property: SubClass)

子类有自己的属性

class SubClass(val subProperty: Any?)

当我只能访问 class 本身时,我知道我可以通过

轻松获得对 属性 的反射
val reflection = TestClass::property

但是,如何通过反射访问子属性?以下不起作用:

val subReflection = TestClass::property::subProperty

如果有任何见解,我将不胜感激!谢谢!

我找到了答案(感谢@BernhardKern):

TestClass::property.toJoin().where(SubClass::subProperty).equal(whatINeed)
TestClass::property.returnType.jvmErasure

会给你SubClass::class,所以你可以做类似

的事情
val subReflection = TestClass::property.returnType.jvmErasure.declaredMemberProperties.find { it.name == "subProperty" }!!

!! 为了简化代码,您可能需要在实践中实际检查 null。)