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)
    }
    
  • Намудиҳо бе null (дар Kotlin):
    // Ин усул танҳо объектҳои User, ки null нестанд, қабул мекунад
    fun printUserName(user: User) {
        println(user.name) // Бе нол, кафолат дода шудааст
    }