CodeBlanks Logo Icon CodeBlanks

KAPT

KAPT annotation processing'i öğrenirsin.

KAPT nedir?

KAPT (Kotlin Annotation Processing Tool), Kotlin için eski annotation işleme yoludur. Kotlin kodunu önce Java'ya dönüştürür, sonra Java'nın annotation processor'ını çalıştırır.

KAPT, javax.annotation.processing.Processor arabirimini kullanır. Dagger, ButterKnife ve eski Room gibi kütüphaneler KAPT kullanır. Kotlin'i Java'ya dönüştürme adımı zaman alır; bu yüzden KAPT yavaştır. Yeni projelerde KSP önerilir. Eski bağımlılıklar nedeniyle KAPT hala gerekliyse kapt(...) bağımlılığı eklenir ve kapt plugin'i etkinleştirilir.

KAPT processor örneği

Bir KAPT processor'ı AbstractProcessor'dan türer ve process(annotations, roundEnv) metodunu uygular. Bu yapı Java'dan gelir.

Örnek: class EntityProcessor : AbstractProcessor() { override fun process(annotations: Set<TypeElement>, roundEnv: RoundEnvironment): Boolean { ... } }. Burada roundEnv üzerinden annotation'lı öğeler bulunur. İşleyici, her öğe için Filer ile kaynak dosyası yazar. Bu yapı Java standartlarına dayanır; Kotlin'e özgü değildir. Bu yüzden KSP, KAPT'den hem daha hızlı hem de Kotlin'e daha uygundur.

Uygulama KaptProcessor yaz

KaptProcessor sınıfı tanımla. fun process(annotations: List<String>) metodu, her annotation için println("apt: $it") çağrısı yapsın. main içinde listOf("Entity", "Dao") ile çağır.

Başlangıç kodu

Main.kt
// KaptProcessor sınıfını ekle

fun main() {
    KaptProcessor().process(listOf("Entity", "Dao"))
}

Örnek çözüm

Main.kt
class KaptProcessor {
    fun process(annotations: List<String>) {
        for (it in annotations) println("apt: $it")
    }
}
fun main() {
    KaptProcessor().process(listOf("Entity", "Dao"))
}

Beklenen çıktı

apt: Entity
apt: Dao

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 KAPT parçalarını eşle

Kavram Anlamı
KAPT Eski işleme yolu
javax.annotation.processing Java APT arabirimi
kapt plugin Gradle eklentisi
kapt(...) Bağımlılık

2 KAPT neden yavaştır?

  • Reflection kullanır
  • Coroutine başlatır
  • Her seferinde ağ bağlantısı açar
  • Kotlin'i önce Java'ya dönüştürür Doğru cevap

Açıklama: KAPT, Kotlin'i Java'ya dönüştürme adımı yüzünden yavaştır.

3 KAPT processor sınıfını tamamla

Soru
class EntityProcessor : ____() {
    override fun process(annotations: Set<TypeElement>, roundEnv: RoundEnvironment): Boolean {
        return true
    }
}
Cevap
class EntityProcessor : AbstractProcessor() {
    override fun process(annotations: Set<TypeElement>, roundEnv: RoundEnvironment): Boolean {
        return true
    }
}

Açıklama: KAPT processor'ları AbstractProcessor'dan türer.

Uzman bölümündeki tüm dersler