- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 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/
我卡在了这个特性上,下面是预期生成的代码,参数总数不是固定的,可能有 2 个,或者 3 个或更多。 val 实例:InstanceType = Instance(parameter1, paramet
我正在使用以下代码生成与 KotlinPoet 的接口(interface) val funspec = FunSpec.builder("test").build() val interfacesp
我是 KotlinPoet 的新手,我找不到如何创建以下 Koin 模块语句: internal val apiModules = module { single { get().create
我正在使用以下代码生成与 KotlinPoet 的接口(interface) val funspec = FunSpec.builder("test").build() val interfacesp
我想用 KotlinPoet 生成简单的数据类: data class User(val id: Int) 我就是这样做的: val builder = KotlinFile.builder("",
我想生成这样的代码: class B private constructor() : A { companion object { val instance: B by laz
我是使用 kotlinpoet 的新手,我一直在阅读文档,它似乎是一个很棒的库,但我找不到解决我问题的示例。 我有一个依赖 lib-domain-0.1.jar我在其中有业务对象,例如: packag
我想生成一个kotlin类定义,这个类实现了自定义接口(interface),目标类定义如下: data class TemplateState(val data: String) : Contrac
使用 KotlinPoet,为了生成用于向类和构造函数添加属性的 PropertySpec,您需要一个 TypeName 对象。 TypeMirror.asTypeName() KotlinPoet
给定一个界面 interface Builder { fun build() : R } 我如何生成使用 kotlinpoet 实现此接口(interface)的类 BooBuilder。 我
直截了当;有没有办法从字符串生成有效的 Kotlin 字符串文字(非原始,如非三重引号);我目前正在尝试使用 KotlinPoet 来完成此操作. 为了清楚起见,示例输入: Hello, how ar
我正在尝试添加此third party在我的项目中,这个第三方使用 kotlinpoet 的注释处理来生成分析类,用于在 firebase 或任何分析工具上记录用户事件,但我遇到了这个问题 e: [k
我是一名优秀的程序员,十分优秀!