Как создать класс с пользовательским интерфейсом через kotlinpoet

Я хочу сгенерировать определение класса kotlin, этот класс реализует настроенный интерфейс, определение целевого класса, как показано ниже:

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

1 ответ

Решение

Я думаю, что вы ищете addSuperInterface метод, который вы можете связать с TypeSpec строитель:

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

Если у вас есть имя пакета для ContractState класс, вы можете добавить его в качестве первого параметра ClassName конструктор. Или, если вы можете сослаться на ContractState введите напрямую, вы можете создать TypeName экземпляр с ParameterizedTypeName.get(...) вызов.

Другие вопросы по тегам