如何通过 kotlinpoet 生成带有 typealias 参数的 class

How to generate a class with a typealias parameter via kotlinpoet

我想用 typealias 生成一个 kotlin class 定义。

typealias MyAlias = BigDecimal
class TemplateState(var test: MyAlias) {
}

有什么建议吗?

您可以在 documentation:

中找到它
//create a TypeAlias and store it to use the name later
val typeAlias = TypeAliasSpec.builder("MyAlias", BigDecimal::class).build()
val type = TypeSpec.classBuilder("TemplateState").primaryConstructor(
    FunSpec.constructorBuilder().addParameter(
        //You can use the ClassName class to get the typeAlias type
        ParameterSpec.builder("test", ClassName("", typeAlias.name)).build()
    )
).build()
FileSpec.builder("com.example", "HelloWorld")
    .addTypeAlias(typeAlias)
    .addType(type)
    .build()

KotlinPoet 并不关心 ClassName 代表 typealias 还是真实类型。在您的情况下, ClassName("", "MyAlias") (假设 MyAlias 在默认包中声明)足以用作构造函数参数的类型。当然,您需要单独生成 typealias 以确保生成的代码可以编译。