如何通过 kotlinpoet 生成具有自定义界面的类

Jia*_* Li 3 kotlin kotlinpoet

我想生成一个kotlin类定义,这个类实现了一个自定义接口,目标类定义如下:

data class TemplateState(val data: String) : ContractState {
}
Run Code Online (Sandbox Code Playgroud)

除了界面部分,我使用下面的诗人代码生成它,有人可以帮忙吗?

val file = FileSpec.builder("com.template", "StatesAndContracts")
        .addType(TypeSpec.classBuilder("TemplateState")
                .addModifiers(KModifier.DATA)
                .primaryConstructor(FunSpec.constructorBuilder()
                .addParameter("data", String::class)
                .build())
                .addProperty(PropertySpec.builder("data", String::class)
                .initializer("data")
                .build())
                .build())
        .build()
Run Code Online (Sandbox Code Playgroud)

zsm*_*b13 5

我认为您正在寻找addSuperInterface可以链接到TypeSpec构建器的方法:

TypeSpec.classBuilder("TemplateState")
        .addSuperinterface(ClassName("", "ContractState"))
        ...
Run Code Online (Sandbox Code Playgroud)

如果您有类的包名,则ContractState可以将其添加为ClassName构造函数的第一个参数。或者,如果您可以ContractState直接引用类型,则可以TypeName通过ParameterizedTypeName.get(...)调用创建实例。