gpt4 book ai didi

kotlin - 如何使用 KotlinPoet 为 PropertySpec 获取正确的 TypeName

转载 作者:行者123 更新时间:2023-12-04 11:29:56 29 4
gpt4 key购买 nike

使用 KotlinPoet,为了生成用于向类和构造函数添加属性的 PropertySpec,您需要一个 TypeName 对象。
TypeMirror.asTypeName() KotlinPoet 函数已被弃用,因为它对于 Kotlin 类型并不总是正常工作。
但是我找不到一个关于如何使用 kotlinpoet-metadata API 为 Kotlin 类(例如 kotlin.String)获取正确 TypeName 的示例,如弃用消息所述。
kotlinpoet-metadata API 的文档也似乎完全损坏(转到 https://square.github.io/kotlinpoet/interop-kotlinx-metadata/#interop-with-kotlinx-metadata 并单击 API 部分下的任何内容)
有没有人举个例子说明如何用一些 kotlinpoet-metadata 代码替换 TypeMirror.asTypeName() 以获得 TypeName,以便我可以创建一个 PropertySpec?

最佳答案

不太确定这是否与弃用消息的意图一致,但这就是我让它起作用的原因。
我首先必须添加 kotlinpoet-metadata-specs。

implementation("com.squareup:kotlinpoet:1.7.1")
implementation("com.squareup:kotlinpoet-metadata:1.7.1")
implementation("com.squareup:kotlinpoet-metadata-specs:1.7.1")
然后使用来自 com.squareup.kotlinpoet.metadata.specs.internal.ClassInspectorUtil 的 util 方法创建类名。
val packageName = getPackage(element).qualifiedName.toString()
val typeMetadata = element.getAnnotation(Metadata::class.java)
val kmClass = typeMetadata.toImmutableKmClass()
val className = ClassInspectorUtil.createClassName(kmClass.name)
然后使用
val funSpec = FunSpec.builder("allNullableSet")
.receiver(className)
.returns(Boolean::class.java)
.addStatement(statement)
.build()

关于kotlin - 如何使用 KotlinPoet 为 PropertySpec 获取正确的 TypeName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67078665/

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