Sobes.tech
Junior

რა მოხდება, თუ მიმართავთ ობიექტის ველს, რომელიც შეიძლება იყოს null?

sobes.tech AI

პასუხი AI-სგან

NullPointerException (NPE). როდესაც ცდილობთ მეთოდის გამოძახებას ან ობიექტის ველის მიმართვას, რომლის მითითება null-ია.

მაგალითი:

data class User(val name: String)

fun printUserName(user: User?) {
    // თუ user == null, მოხდება NullPointerException
    println(user.name)
}

NPE-ის თავიდან ასაცილებლად შეგიძლიათ გამოიყენოთ:

  • null-ის შემოწმებები:
    fun printUserName(user: User?) {
        if (user != null) {
            println(user.name)
        } else {
            println("მომხმარებელი null-ია")
        }
    }
    
  • უსაფრთხო გამოძახების ოპერატორი (?.):
    fun printUserName(user: User?) {
        println(user?.name) // გამოიტანს null, თუ user null-ია, სხვა შემთხვევაში სახელი
    }
    
  • ელვის ოპერატორი (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "ნაგულისხმევი სახელი" // თუ user?.name null-ია, მიენიჭება "ნაგულისხმევი სახელი"
        println(userName)
    }
    
  • Kotlin-ის არა-null ტიპები:
    // ეს მეთოდი იღებს მხოლოდ არა-null ობიექტს User
    fun printUserName(user: User) {
        println(user.name) // გარანტირებული არა-null
    }