Как создать класс с пользовательским интерфейсом через 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(...)
вызов.