Gerando arquivos de código-fonte Kotlin com KotlinPoet
Use KotlinPoet em um processador KSP para gerar código Kotlin seguro quanto a tipos.
Gerando arquivos de código-fonte Kotlin com KotlinPoet é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.
O que é KotlinPoet?
KotlinPoet é a API Kotlin da Square para gerar arquivos de código-fonte .kt de forma programática. Ela produz código Kotlin bem formatado e idiomático e se integra naturalmente ao CodeGenerator do KSP.
Adicionando a dependência
Adicione KotlinPoet ao módulo do processador:
dependencies {
implementation("com.squareup:kotlinpoet:1.17.0")
implementation("com.squareup:kotlinpoet-ksp:1.17.0") // KSP extensions
}FileSpec: a raiz de um arquivo gerado
FileSpec.builder(packageName, fileName) é o ponto de entrada. Adicione tipos, funções e propriedades a ele e, em seguida, grave o resultado por meio do CodeGenerator do KSP:
val file = FileSpec.builder("com.example.generated", "MyFactory")
.addType( /* TypeSpec here */ )
.build()TypeSpec: definindo uma classe
Use TypeSpec.classBuilder() para classes, objectBuilder() para objetos e interfaceBuilder() para interfaces. Encadeie chamadas do construtor para adicionar funções, propriedades e interfaces superiores:
val classSpec = TypeSpec.classBuilder("MyFactory")
.addModifiers(KModifier.PUBLIC)
.addFunction( /* FunSpec */ )
.build()FunSpec: gerando uma função
FunSpec.builder(name) cria uma função. Use addParameter(), returns() e addStatement() para construir sua assinatura e seu corpo:
val funSpec = FunSpec.builder("create")
.addParameter("name", String::class)
.returns(String::class)
.addStatement("return "Hello, %L!", name")
.build()PropertySpec: gerando uma propriedade
Use PropertySpec.builder(name, type) para gerar propriedades. Especifique KModifier.PRIVATE, KModifier.OVERRIDE ou use mutable() para var:
val propSpec = PropertySpec.builder("tag", String::class)
.initializer("%S", "MyClass")
.addModifiers(KModifier.PRIVATE)
.build()Especificadores de formato de código
O KotlinPoet usa especificadores de formato em addStatement() e initializer():
%L— literal (sem aspas)%S— literal de cadeia de caracteres (com aspas)%T— nome do tipo (gerencia as importações automaticamente)%N— nome (de uma especificação ou cadeia de caracteres)
Importações automáticas com %T
Quando você usa %T com um ClassName, o KotlinPoet adiciona automaticamente a importação necessária. Você nunca precisa escrever instruções de importação manualmente:
val listType = ClassName("kotlin.collections", "List")
val funSpec = FunSpec.builder("items")
.returns(listType.parameterizedBy(String::class.asTypeName()))
.addStatement("return emptyList()")
.build()Gravando no CodeGenerator do KSP
Use a ponte kotlinpoet-ksp para gravar o FileSpec gerado por meio do CodeGenerator do KSP, preservando os metadados da compilação incremental:
file.writeTo(
codeGenerator = codeGenerator,
aggregating = false
)Gerando funções de extensão
Use FunSpec.builder(name).receiver(type) para gerar funções de extensão:
val extFun = FunSpec.builder("toJson")
.receiver(ClassName("com.example", "User"))
.returns(String::class)
.addStatement("return Gson().toJson(this)")
.build()Caso de uso prático: gerador de fábricas
Um processador KSP anota classes de dados com @AutoFactory e usa KotlinPoet para gerar um objeto de fábrica companheiro para cada uma. O arquivo gerado é colocado no mesmo pacote da classe original.
Testando código gerado
Use FileSpec.toString() do KotlinPoet em testes unitários para verificar o texto do código-fonte gerado sem gravá-lo no disco. A biblioteca kotlin-compile-testing-ksp pode compilar e executar código gerado em testes.
Verificação rápida
No KotlinPoet, qual especificador de formato adiciona automaticamente a importação necessária para uma classe referenciada?
Recapitulação: gerando arquivos de código-fonte Kotlin com KotlinPoet
Principais conclusões:
FileSpec→ arquivo de nível superior;TypeSpec→ classe/objeto/interface;FunSpec→ função;PropertySpec→ propriedade- Use
%Tpara referências de tipos — as importações são automáticas - Grave usando
file.writeTo(codeGenerator)nos processadores KSP - Use
FileSpec.toString()para testes unitários da saída gerada
Aprenda Kotlin com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 51
- Aulas
- 203
Perguntas Frequentes
A aula “Gerando arquivos de código-fonte Kotlin com KotlinPoet” é grátis?
Sim — o texto completo de “Gerando arquivos de código-fonte Kotlin com KotlinPoet” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.
O que vou aprender em “Gerando arquivos de código-fonte Kotlin com KotlinPoet”?
Use KotlinPoet em um processador KSP para gerar código Kotlin seguro quanto a tipos. Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Kotlin Academy?
Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Gerando arquivos de código-fonte Kotlin com KotlinPoet”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Kotlin Academy?
Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- KSP vs KAPT: por que KSP é mais rápido
- Escrevendo seu primeiro SymbolProcessor
- Gerando arquivos de código-fonte Kotlin com KotlinPoet
- Integrando processadores KSP a uma compilação Gradle