Sobes.tech
Junior

Ներկայացրեք, թե ինչ է null safety-ը Kotlin լեզվում։

sobes.tech AI

Պատասխան AI-ից

Null safety — դա Kotlin լեզվի ֆունկցիա է, որը կանխում է null հղումներին կապված սխալները: Դա հասնում է երկու տեսակի հղում ստեղծելով՝ nullable (թույլատրում է null) և non-nullable (թույլատրում է null չլինել):

Non-nullable տիպերը հայտարարում են սովորական կերպով:

var nonNullableString: String = "Hello" // Չի կարող լինել null

Nullable տիպերը հայտարարում են ? նշանի օգտագործմամբ՝ տիպի անունից հետո:

var nullableString: String? = "Hello" // Կարող է լինել null
nullableString = null

Kotlin-ը պահանջում է բացահայտ մշակել nullable տիպերը՝ կանխելով ուղիղ դիմումը նրանց անդամներին առանց նախնական ստուգման null-ի համար: Դրա համար տրամադրվում են հետևյալ մեխանիզմները՝

  1. Անվտանգ կանչի օպերատոր (?.): Կոչում է մեթոդ կամ դիմում է հատկությանը միայն այն դեպքում, եթե օբյեկտը չի null. հակառակ դեպքում վերադարձնում է null:

    val length = nullableString?.length // length կլինի Int? կամ null
    
  2. Elvis օպերատոր (?:): Առաջարկում է նախնական արժեք, եթե ձախ կողմի արտահայտությունը null է:

    val nonNullLength = nullableString?.length ?: 0 // nonNullLength կլինի Int, 0 եթե nullableString null
    
  3. !! ոչ-null հաստատման օպերատոր: Փոխում է nullable տիպը non-nullable, եթե արժեքը null է, նետում է NullPointerException. Օգտագործվում է, երբ ծրագրավորողը վստահ է, որ արժեքը չի null:

    val sureLength = nullableString!!.length // Նետում է NullPointerException եթե nullableString null է
    
  4. if ստուգումներ: Տрадиցիոն null ստուգում if-ով: Սմարթ կասթինգ (խելացի վերածում) կատարվում է null-ի ստուգումից հետո՝ if բլոկում, եթե ստուգումը անցել է:

    if (nullableString != null) {
        val length = nullableString.length // Այստեղ nullableString-ը դիտարկվում է որպես String
    }
    

Այս մեխանիզմները թույլ են տալիս բացահայտ կառավարել այն իրավիճակները, երբ փոփոխականը կարող է լինել null, ինչը զգալիորեն նվազեցնում է NullPointerException-ի առաջացման հավանականությունը ծրագրի գործարկման ժամանակ։