gpt4 book ai didi

kotlin - 使用 KotlinPoet 生成数据类

转载 作者:行者123 更新时间:2023-12-01 23:58:39 27 4
gpt4 key购买 nike

我想用 KotlinPoet 生成简单的数据类:

data class User(val id: Int)

我就是这样做的:

val builder = KotlinFile.builder("", "Foo")
val classBuilder = TypeSpec.classBuilder("User").addModifiers(KModifier.DATA)
val ctor = FunSpec.constructorBuilder()
ctor.addParameter("id", Int::class)
classBuilder.primaryConstructor(ctor.build())
builder.addType(classBuilder.build())
builder.build().writeTo(System.out)

但是我得到的是这样的:

data class User(id: Int) {
}

如何向构造函数参数添加 val 修饰符?

最佳答案

这是一个issue讨论这个问题。

结论是,编写这段代码的方法是创建一个与构造函数参数名称匹配的属性,并由它初始化:

KotlinFile.builder("", "Foo")
.addType(TypeSpec.classBuilder("User")
.addModifiers(KModifier.DATA)
.primaryConstructor(FunSpec.constructorBuilder()
.addParameter("id", Int::class)
.build())
.addProperty(PropertySpec.builder("id", Int::class)
.initializer("id")
.build())
.build()
)
.build()
.writeTo(System.out)

但是,此功能自 0.2.0 起不可用。 KotlinPoet 的发布。已经实现了,有 test为此,在正在传递的存储库中,但您必须等待 0.3.0发布 KotlinPoet 以便能够使用此功能,预计将在未来几天内发布。

此功能可从 0.3.0 获得,现已推出。

<小时/>

之前的代码具有与您的原始样式相匹配的替代格式:

val builder = KotlinFile.builder("", "Foo")
val classBuilder = TypeSpec.classBuilder("User").addModifiers(KModifier.DATA)

val ctor = FunSpec.constructorBuilder()
ctor.addParameter("id", Int::class)
classBuilder.primaryConstructor(ctor.build())

val idProperty = PropertySpec.builder("id", Int::class).initializer("id").build()
classBuilder.addProperty(idProperty)

builder.addType(classBuilder.build())
builder.build().writeTo(System.out)

关于kotlin - 使用 KotlinPoet 生成数据类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44483831/

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