Sobes.tech
Junior

Kotlin'de 'nullable' türleri nedir ve nasıl çalışırlar?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kotlin'de nullable türler, hem değer hem de null içerebilen türlerdir. Bunlar, tür adından sonra gelen ? sembolüyle açıkça belirtilir.

Çalışma prensibi, Kotlin'in tip sistemi üzerine kuruludur ve derleme sırasında NullPointerException'ı engeller. Derleyici, nullable türdeki bir nesnenin üyelerine erişmeden önce açık bir null kontrolü yapılmasını zorunlu kılar.

Nullable türlerle güvenli çalışmanın temel yolları şunlardır:

  • null kontrolü if kullanarak:

    fun printLength(str: String?) {
        if (str != null) {
            println(str.length) // null kontrolünden sonra güvenli çağrı
        } else {
            println("String null")
        }
    }
    
  • Güvenli çağrı operatörü (?.): Nesne null ise null döner, değilse çağrının sonucu döner.

    val safeLength: Int? = str?.length // Eğer str null ise, safeLength null olur
    
  • Elvis operatörü (?:): Sol taraftaki ifade null ise varsayılan bir değer sağlar.

    val lengthOrDefault: Int = str?.length ?: 0 // Eğer str null ise, lengthOrDefault 0 olur
    
  • Açık null olmayan onay operatörü (!!): Nullable türü non-nullable yapar. Dikkatli kullanılmalı, çünkü değer null ise NullPointerException fırlatır.

    val assertedLength: Int = str!!.length // Eğer str null ise NPE fırlatır
    
  • let/run/apply/also fonksiyonları ve güvenli çağrı:

    str?.let {
        // Kod, sadece str null değilse çalışır
        println("String uzunluğu: ${it.length}")
    }
    

Kotlin'in nullable tür sistemi, güvenliği önemli ölçüde artırır ve null'ın herhangi bir türe açıkça belirtilmeden atanabildiği dillere kıyasla NullPointerException olasılığını azaltır.