У меня есть следующий код:
class User : MyType {
val address: Address? = null
val company: Company? = null
...
}
class Address : MyType {
val city: String? = null
}
class Company : MyType {
val name: String? = null
}
var properties: MutableMap<String, Collection<KProperty1<Any, *>>>? = mutableMapOf()
fun init() {
fillPropertiesMap(User::class.java)
}
private inline fun <reified T : Any> fillPropertiesMap(clazz: Class<T>) {
val prop = clazz.kotlin.memberProperties
.filter { it.visibility == KVisibility.PUBLIC } as Collection<KProperty1<Any, *>>
fill(clazz as Class<Any>, prop)
}
fun fill(clazz: Class<Any>, props: Collection<KProperty1<Any, *>>) {
properties[clazz.simpleName] = props
props.forEach()
{ prop ->
if (isMyCustomType(prop)) {
fillPropertiesMap(prop.????) . // how get class from KProperty1 for Address.class and Company.class
}
}
}
Я хочу заполнить карту KProperty1 моего класса User. Класс User имеет иерархическую структуру, и мне нужно получить весь список KProperty1 классов, которые находятся в классе User. Вопрос в том, как получить класс из KProperty1