什么是从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()
来代替。