如何通过 kotlinpoet 生成带有自定义界面的 class

How to generate a class with a custom interface via kotlinpoet

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

data class TemplateState(val data: String) : ContractState {
}

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

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()

我认为您正在寻找 addSuperInterface 方法,您可以将其链接到 TypeSpec 生成器:

TypeSpec.classBuilder("TemplateState")
        .addSuperinterface(ClassName("", "ContractState"))
        ...

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