gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 01:53:03 25 4
gpt4 key购买 nike

我有两个可能看起来像这样的类(class)

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 魔法而不是纯粹的 Kotlin,有没有合适的方法来做我想做的事?或者这是正确的方法?

最佳答案

您可以使用 (property.returnType.classifier as KClass).createInstance()反而。

关于reflection - 从 KType 创建类实例的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42748892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com