0

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

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

有什么建议么?

4

2 回答 2

1

您可以在文档中找到它:

//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()
于 2020-01-27T10:43:07.553 回答
0

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

于 2020-01-28T13:09:25.280 回答