Каков правильный способ создания экземпляра класса из KType

У меня есть два класса, которые могут выглядеть так:

class MyClass { var myProperty: AnotherClass? } class AnotherClass { } 

Через отражение я повторяю свойства MyClass, и когда я нахожу KMutableProperty<*> который является null, я хочу создать экземпляр этого класса. Прямо сейчас я делаю что-то вроде этого

 val instance = MyClass() val property = MyClass::myProperty var subInstance = it.getter.call(instance) if (subInstance == null) { it.setter.call(instance, property.returnType.jvmErasure.createInstance()) } 

но это кажется ужасным взломом, который должен знать внутренности и использовать магию Java вместо того, чтобы быть чистым Котлином, есть ли способ сделать то, что я хочу? Или это правильно?

Вы можете использовать (property.returnType.classifier as KClass).createInstance() .