什么是从KType创建类实例的正确方法

我有两个类可能看起来像这样

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

通过reflection我遍历MyClass的属性,当我find一个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魔法而不是纯粹的Kotlin,有没有一个正确的方法来做我想要的? 或者这是正确的方式?

你可以使用(property.returnType.classifier as KClass).createInstance()来代替。