Kotlin-Quelldateien mit KotlinPoet generieren
Verwenden Sie KotlinPoet in einem KSP-Prozessor, um typsicheren Kotlin-Code zu generieren.
Kotlin-Quelldateien mit KotlinPoet generieren ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist KotlinPoet?
KotlinPoet ist die Kotlin-API von Square zum programmgesteuerten Generieren von .kt-Quelldateien. Sie erzeugt gut formatierten, idiomatischen Kotlin-Code und lässt sich nahtlos in den CodeGenerator von KSP integrieren.
Die Abhängigkeit hinzufügen
Fügen Sie KotlinPoet zu Ihrem Prozessormodul hinzu:
dependencies {
implementation("com.squareup:kotlinpoet:1.17.0")
implementation("com.squareup:kotlinpoet-ksp:1.17.0") // KSP extensions
}FileSpec: Die Wurzel einer generierten Datei
FileSpec.builder(packageName, fileName) ist der Einstiegspunkt. Fügen Sie Typen, Funktionen und Properties hinzu und schreiben Sie das Ergebnis anschließend über den CodeGenerator von KSP:
val file = FileSpec.builder("com.example.generated", "MyFactory")
.addType( /* TypeSpec here */ )
.build()TypeSpec: Eine Klasse definieren
Verwenden Sie TypeSpec.classBuilder() für Klassen, objectBuilder() für Objekte und interfaceBuilder() für Interfaces. Verketten Sie Builder-Aufrufe, um Funktionen, Properties und Superinterfaces hinzuzufügen:
val classSpec = TypeSpec.classBuilder("MyFactory")
.addModifiers(KModifier.PUBLIC)
.addFunction( /* FunSpec */ )
.build()FunSpec: Eine Funktion generieren
FunSpec.builder(name) erstellt eine Funktion. Verwenden Sie addParameter(), returns() und addStatement(), um ihre Signatur und ihren Rumpf zu erstellen:
val funSpec = FunSpec.builder("create")
.addParameter("name", String::class)
.returns(String::class)
.addStatement("return "Hello, %L!", name")
.build()PropertySpec: Eine Property generieren
Verwenden Sie PropertySpec.builder(name, type), um Properties zu generieren. Geben Sie KModifier.PRIVATE oder KModifier.OVERRIDE an oder verwenden Sie mutable() für var:
val propSpec = PropertySpec.builder("tag", String::class)
.initializer("%S", "MyClass")
.addModifiers(KModifier.PRIVATE)
.build()Formatbezeichner für Code
KotlinPoet verwendet Formatbezeichner in addStatement() und initializer():
%L– Literal (ohne Anführungszeichen)%S– Zeichenkettenliteral (mit Anführungszeichen)%T– Typname (Importe werden automatisch verarbeitet)%N– Name (einer Spec oder Zeichenkette)
Automatische Importe mit %T
Wenn Sie %T mit einem ClassName verwenden, fügt KotlinPoet den erforderlichen Import automatisch hinzu. Sie müssen Import-Anweisungen nie von Hand schreiben:
val listType = ClassName("kotlin.collections", "List")
val funSpec = FunSpec.builder("items")
.returns(listType.parameterizedBy(String::class.asTypeName()))
.addStatement("return emptyList()")
.build()In den KSP-CodeGenerator schreiben
Verwenden Sie die kotlinpoet-ksp-Bridge, um die generierte FileSpec über den CodeGenerator von KSP zu schreiben und dabei Metadaten für inkrementelle Builds zu erhalten:
file.writeTo(
codeGenerator = codeGenerator,
aggregating = false
)Extension Functions generieren
Verwenden Sie FunSpec.builder(name).receiver(type), um Extension Functions zu generieren:
val extFun = FunSpec.builder("toJson")
.receiver(ClassName("com.example", "User"))
.returns(String::class)
.addStatement("return Gson().toJson(this)")
.build()Praktischer Anwendungsfall: Einen Factory-Generator erstellen
Ein KSP-Prozessor annotiert Datenklassen mit @AutoFactory und verwendet KotlinPoet, um für jede Datenklasse ein Companion-Factory-Objekt zu generieren. Die generierte Datei wird im selben Paket wie die ursprüngliche Klasse abgelegt.
Generierten Code testen
Verwenden Sie FileSpec.toString() von KotlinPoet in Unit-Tests, um den generierten Quelltext zu überprüfen, ohne ihn auf die Festplatte zu schreiben. Die Bibliothek kotlin-compile-testing-ksp kann generierten Code in Tests kompilieren und ausführen.
Kurzer Test
Welcher Formatbezeichner fügt in KotlinPoet automatisch den erforderlichen Import für eine referenzierte Klasse hinzu?
Rückblick: Kotlin-Quelldateien mit KotlinPoet generieren
Die wichtigsten Erkenntnisse:
FileSpec→ Datei auf oberster Ebene;TypeSpec→ Klasse/Objekt/Interface;FunSpec→ Funktion;PropertySpec→ Property- Verwenden Sie
%Tfür Typreferenzen – Imports werden automatisch hinzugefügt - Schreiben Sie in KSP-Prozessoren mit
file.writeTo(codeGenerator) - Verwenden Sie
FileSpec.toString(), um die generierte Ausgabe mit Unit-Tests zu testen
Lerne Kotlin mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 51
- Lektionen
- 203
Häufig gestellte Fragen
Ist die Lektion „Kotlin-Quelldateien mit KotlinPoet generieren“ kostenlos?
Ja — der vollständige Text von „Kotlin-Quelldateien mit KotlinPoet generieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Kotlin-Quelldateien mit KotlinPoet generieren“?
Verwenden Sie KotlinPoet in einem KSP-Prozessor, um typsicheren Kotlin-Code zu generieren. Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Kotlin Academy zu starten?
Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Kotlin-Quelldateien mit KotlinPoet generieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?
Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- KSP vs. KAPT: Warum KSP schneller ist
- Ihren ersten SymbolProcessor schreiben
- Kotlin-Quelldateien mit KotlinPoet generieren
- KSP-Prozessoren in einen Gradle-Build integrieren