Sobes.tech
Junior

Kotlin тилиндеги null коопсуздугу эмне экенин түшүндүрүңүз.

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 болсо, null кайтарат:

    val length = nullableString?.length // length — Int? же null
    
  2. Элвис оператору (?:): Сол жактагы мааниге null болсо, алдын ала белгиленген маанини берет:

    val nonNullLength = nullableString?.length ?: 0 // nonNullLength — Int, эгер nullableString null болсо, 0
    
  3. !! эмес- null тастыктоо оператору: Nullable түрүн non-nullable кылат. Эгер мааниси null болсо, NullPointerException таштайт. Бул операторду ишенимдүү колдонуу үчүн, мааниси null эмес деп ишенсе болот:

    val sureLength = nullableString!!.length // Эгер nullableString null болсо, NullPointerException таштайт
    
  4. if-текшерүүлөр: Традициялык null текшерүү if менен жүргүзүлөт. Эгер текшерүү өтсө, smart cast (акылдуу түргө өткөрүү) nullable түрүн null эмес түргө айлантат:

    if (nullableString != null) {
        val length = nullableString.length // Бул учурда nullableString — String катары каралат
    }
    

Бул механизмдер null болушу мүмкүн болгон өзгөрмөлөрдү ачык башкарууга мүмкүндүк берет, жана бул программа иштеп жатканда NullPointerException катанын алдын алууга жардам берет.