0Pricing
Kotlin Academy · Pelajaran

Membuat File Sumber Kotlin dengan KotlinPoet

Gunakan KotlinPoet di dalam pemroses KSP untuk membuat kode Kotlin yang aman terhadap tipe.

Membuat File Sumber Kotlin dengan KotlinPoet adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Kotlin Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Kotlin Academy mencakup 4 pelajaran total.

Apa itu KotlinPoet?

KotlinPoet adalah API Kotlin dari Square untuk menghasilkan berkas sumber .kt secara terprogram. KotlinPoet menghasilkan kode Kotlin yang rapi dan sesuai idiom, serta terintegrasi secara alami dengan CodeGenerator KSP.

Menambahkan Dependensi

Tambahkan KotlinPoet ke modul pemroses Anda:

dependencies {
    implementation("com.squareup:kotlinpoet:1.17.0")
    implementation("com.squareup:kotlinpoet-ksp:1.17.0") // KSP extensions
}

FileSpec: Akar Berkas yang Dihasilkan

FileSpec.builder(packageName, fileName) adalah titik masuknya. Tambahkan jenis, fungsi, dan properti ke dalamnya, lalu tulis hasilnya melalui CodeGenerator KSP:

val file = FileSpec.builder("com.example.generated", "MyFactory")
    .addType( /* TypeSpec here */ )
    .build()

TypeSpec: Mendefinisikan Kelas

Gunakan TypeSpec.classBuilder() untuk kelas, objectBuilder() untuk objek, dan interfaceBuilder() untuk antarmuka. Rangkai panggilan builder untuk menambahkan fungsi, properti, dan antarmuka super:

val classSpec = TypeSpec.classBuilder("MyFactory")
    .addModifiers(KModifier.PUBLIC)
    .addFunction( /* FunSpec */ )
    .build()

FunSpec: Menghasilkan Fungsi

FunSpec.builder(name) membuat sebuah fungsi. Gunakan addParameter(), returns(), dan addStatement() untuk membangun tanda tangan dan isi fungsi:

val funSpec = FunSpec.builder("create")
    .addParameter("name", String::class)
    .returns(String::class)
    .addStatement("return "Hello, %L!", name")
    .build()

PropertySpec: Menghasilkan Properti

Gunakan PropertySpec.builder(name, type) untuk menghasilkan properti. Tentukan KModifier.PRIVATE, KModifier.OVERRIDE, atau gunakan mutable() untuk var:

val propSpec = PropertySpec.builder("tag", String::class)
    .initializer("%S", "MyClass")
    .addModifiers(KModifier.PRIVATE)
    .build()

Penentu Format Kode

KotlinPoet menggunakan penentu format dalam addStatement() dan initializer():

  • %L — literal (tanpa tanda kutip)
  • %S — literal teks (dengan tanda kutip)
  • %T — nama jenis (mengelola impor secara otomatis)
  • %N — nama (dari spesifikasi atau teks)

Impor Otomatis dengan %T

Saat Anda menggunakan %T dengan ClassName, KotlinPoet secara otomatis menambahkan impor yang diperlukan. Anda tidak perlu menulis pernyataan impor secara manual:

val listType = ClassName("kotlin.collections", "List")
val funSpec = FunSpec.builder("items")
    .returns(listType.parameterizedBy(String::class.asTypeName()))
    .addStatement("return emptyList()")
    .build()

Menulis ke CodeGenerator KSP

Gunakan jembatan kotlinpoet-ksp untuk menulis FileSpec yang dihasilkan melalui CodeGenerator KSP, sekaligus mempertahankan metadata build inkremental:

file.writeTo(
    codeGenerator = codeGenerator,
    aggregating = false
)

Menghasilkan Fungsi Ekstensi

Gunakan FunSpec.builder(name).receiver(type) untuk menghasilkan fungsi ekstensi:

val extFun = FunSpec.builder("toJson")
    .receiver(ClassName("com.example", "User"))
    .returns(String::class)
    .addStatement("return Gson().toJson(this)")
    .build()

Kasus Penggunaan Praktis: Pembuat Pabrik

Pemroses KSP memberi anotasi @AutoFactory pada kelas data dan menggunakan KotlinPoet untuk menghasilkan objek pabrik pendamping untuk setiap kelas. Berkas yang dihasilkan ditempatkan dalam paket yang sama dengan kelas asli.

Menguji Kode yang Dihasilkan

Gunakan FileSpec.toString() milik KotlinPoet dalam pengujian unit untuk memeriksa teks sumber yang dihasilkan tanpa menulisnya ke disk. Pustaka kotlin-compile-testing-ksp dapat mengompilasi dan menjalankan kode yang dihasilkan dalam pengujian.

Pemeriksaan Singkat

Dalam KotlinPoet, penentu format mana yang secara otomatis menambahkan impor yang diperlukan untuk kelas yang dirujuk?

Rekapitulasi: Menghasilkan Berkas Sumber Kotlin dengan KotlinPoet

Poin penting:

  • FileSpec → berkas tingkat atas; TypeSpec → kelas/objek/antarmuka; FunSpec → fungsi; PropertySpec → properti
  • Gunakan %T untuk referensi tipe — impor ditambahkan secara otomatis
  • Tulis melalui file.writeTo(codeGenerator) dalam pemroses KSP
  • Gunakan FileSpec.toString() untuk pengujian unit terhadap keluaran yang dihasilkan

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Membuat File Sumber Kotlin dengan KotlinPoet” gratis?

Ya — teks lengkap “Membuat File Sumber Kotlin dengan KotlinPoet” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Kotlin Academy, upgrade ke CoddyKit PRO. Kursus Kotlin Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Membuat File Sumber Kotlin dengan KotlinPoet”?

Gunakan KotlinPoet di dalam pemroses KSP untuk membuat kode Kotlin yang aman terhadap tipe. Kamu berlatih Kotlin Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Kotlin Academy?

Tidak diperlukan pengalaman sebelumnya. Kotlin Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Membuat File Sumber Kotlin dengan KotlinPoet” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Kotlin Academy ini?

Ya. Setiap pelajaran Kotlin Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. KSP vs KAPT: Mengapa KSP Lebih Cepat
  2. Menulis SymbolProcessor Pertama Anda
  3. Membuat File Sumber Kotlin dengan KotlinPoet
  4. Mengintegrasikan Pemroses KSP ke Build Gradle
← Kembali ke Kotlin Academy