Как я могу получить представление о собственности в Kotlin? - PullRequest
0 голосов
/ 17 февраля 2020

скажем, у нас есть класс со свойством subClass.

class TestClass(val property: SubClass)

Подкласс имеет свое собственное свойство

class SubClass(val subProperty: Any?)

Когда у меня есть доступ только к самому классу, я знаю, что Я могу легко получить отражение в свойстве через

val reflection = TestClass::property

Однако, как я могу получить доступ к вложенному объекту через отражение? Следующее не работает:

val subReflection = TestClass::property::subProperty

Я был бы признателен за понимание этого! Спасибо!

Ответы [ 2 ]

1 голос
/ 18 февраля 2020
TestClass::property.returnType.jvmErasure

даст вам SubClass::class, так что вы можете сделать что-то вроде

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

(!!, чтобы упростить код, на практике вы можете захотеть проверить на ноль).

0 голосов
/ 18 февраля 2020

Я нашел ответ (спасибо @BernhardKern):

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