Java'dan Kotlin'e geçiş: null güvenliği, data class ve temel farklar
Java bilen biri için Kotlin öğrenmek zor değildir; ikisi de JVM üzerinde çalışır ve aynı projede yan yana kullanılabilir. Android geliştirmede Kotlin artık varsayılan dildir. Bu rehberde geçişte en çok işine yarayacak farkları özetliyoruz.
Null güvenliği
Kotlin'de bir değişken varsayılan olarak null olamaz. Null olabilecekse tipin sonuna ? eklenir:
val ad: String = "Ayşe" // null atanamaz
val soyad: String? = null // null olabilir
val uzunluk = soyad?.length ?: 0 // güvenli çağrı + varsayılan değer
!! operatörü "bunun null olmadığına eminim" demektir ve null gelirse yine NullPointerException fırlatır. Kodda çok !! görüyorsan tasarımı gözden geçirmek gerekir.
val ve var
val değiştirilemez (Java'daki final), var değiştirilebilir. Mümkün olduğunca val kullanmak hataları azaltır.
Data class
Java'da getter, setter, equals, hashCode ve toString yazmak için onlarca satır gerekirken Kotlin'de tek satır yeterlidir:
data class Kullanici(val id: Int, val ad: String, val eposta: String?)
copy() ile bir kısmı değişmiş yeni nesne üretebilirsin: kullanici.copy(ad = "Mehmet").
Uzantı fonksiyonları
Var olan bir sınıfa, kaynağını değiştirmeden fonksiyon ekleyebilirsin:
fun String.basHarfBuyuk() = replaceFirstChar { it.uppercase() }
when ifadesi
Java'daki switch'in çok daha güçlü hali; değer döndürebilir ve tip kontrolü yapabilir:
val mesaj = when (kod) {
200 -> "Tamam"
404 -> "Bulunamadı"
in 500..599 -> "Sunucu hatası"
else -> "Bilinmiyor"
}
Geçişte pratik öneriler
- Android Studio ve IntelliJ'de Java dosyasını Kotlin'e çeviren bir araç var (Code → Convert Java File to Kotlin). Çıktı çalışır ama genellikle "Java gibi yazılmış Kotlin"dir, elden geçirmek gerekir.
- Mevcut projeyi bir anda çevirmek yerine yeni dosyaları Kotlin ile yazmaya başlamak daha az risklidir.
- Eşzamanlı işler için Kotlin'in coroutine yapısını öğren; Android'de thread ve callback karmaşasını büyük ölçüde azaltır.
Geçiş sürecinde karşılaştığın derleme hatalarını ya da tasarım sorularını bu konunun altında paylaşabilirsin.