Sobes.tech
Junior

Kotlin dilinde null güvenliğinin ne olduğunu açıklayın.

sobes.tech yapay zeka

AI'dan gelen yanıt

Null güvenliği — Kotlin dilinin, null referanslarıyla ilgili hataları önleyen bir özelliğidir. Bu, iki tür referans oluşturularak sağlanır: nullable (null kabul eder) ve non-nullable (null kabul etmez).

Non-nullable türler alışıldığı gibi tanımlanır:

var nonNullableString: String = "Hello" // null olamaz

Nullable türler, tür adından sonra ? sembolü kullanılarak tanımlanır:

var nullableString: String? = "Hello" // null olabilir
nullableString = null

Kotlin, nullable türlere açık bir şekilde işlem yapılmasını zorunlu kılar, böylece null kontrolü olmadan doğrudan üyelere erişim engellenir. Bunun için aşağıdaki mekanizmalar sağlanmıştır:

  1. Güvenli çağrı operatörü (?.): Nesne null değilse, metod çağrısı veya özellik erişimi yapar; aksi takdirde null döner.

    val length = nullableString?.length // length `Int?` veya `null` olur
    
  2. Elvis operatörü (?:): Sol taraftaki ifade null ise, varsayılan bir değer sağlar.

    val nonNullLength = nullableString?.length ?: 0 // `nonNullLength` `Int`, nullableString null ise 0
    
  3. !! operatörü (null olmayan onay operatörü): Nullable türü non-nullable yapar; eğer değer null ise, NullPointerException fırlatır. Bu, geliştiricinin değerin null olmadığından emin olduğu durumlar içindir.

    val sureLength = nullableString!!.length // nullableString null ise NullPointerException fırlatır
    
  4. if kontrolleri: Geleneksel null kontrolü ile if kullanılır. Derleyici, if bloğu içinde nullable tipi non-nullable olarak akıllı şekilde dönüştürür, eğer kontrol geçerse.

    if (nullableString != null) {
        val length = nullableString.length // Burada nullableString String olarak kabul edilir
    }
    

Bu mekanizmalar, bir değişkenin null olabileceği durumları açıkça yönetmeye olanak tanır ve çalışma zamanında NullPointerException olasılığını önemli ölçüde azaltır.