Sobes.tech
Junior

Kotlin dilində null təhlükəsizliyinin nə olduğunu izah edin.

sobes.tech Süni İntellekt

AI-dan cavab

Null təhlükəsizliyi — bu Kotlin dilinin null istinadları ilə əlaqəli səhvləri qarşısını alan funksiyasıdır. Bu, iki növ istinad yaradılaraq həyata keçirilir: nullable (null-a icazə verir) və non-nullable (null-a icazə vermir).

Non-nullable növlər adətən elan edilir:

var nonNullableString: String = "Hello" // null ola bilməz

Nullable növlər isə tip adından sonra ? simvolu istifadə edilərək elan edilir:

var nullableString: String? = "Hello" // null ola bilər
nullableString = null

Kotlin nullable növlərə açıq şəkildə işləməyi tələb edir, beləliklə, null yoxlaması olmadan birbaşa üzvlərə giriş qarşısını alır. Bunun üçün aşağıdakı mexanizmlər təqdim edilir:

  1. Təhlükəsiz çağırış operatoru (?.): Ob'ekt null deyilsə, metod çağırır və ya xüsusiyyətə müraciət edir; əks halda, null qaytarır.

    val length = nullableString?.length // length `Int?` və ya `null`
    
  2. Elvis operatoru (?:): Əgər soldakı ifadə null-sa, standart dəyər verir.

    val nonNullLength = nullableString?.length ?: 0 // nonNullLength `Int`, nullableString null olarsa 0
    
  3. !! - null olmayan təsdiq operatoru: Nullable tipi non-nullable-ə çevirir. Əgər dəyər null-sa, NullPointerException atır. Bu, proqramçı dəyərin null olmadığından əmindirsə istifadə olunur.

    val sureLength = nullableString!!.length // nullableString null olarsa, NullPointerException atır
    
  4. if yoxlamaları: Ənənəvi null yoxlaması ilə if istifadə edilir. Kompilyator null tipini non-nullable-a ağıllı şəkildə çevirir (smart cast) əgər yoxlama keçərsə.

    if (nullableString != null) {
        val length = nullableString.length // Burada nullableString String kimi qəbul edilir
    }
    

Bu mexanizmlər, dəyişənin null ola biləcəyi vəziyyətləri açıq şəkildə idarə etməyə imkan verir və proqramın icrası zamanı NullPointerException ehtimalını əhəmiyyətli dərəcədə azaldır.