Sobes.tech
Junior

Какво се случва, ако се обърнете към nullable поле на обект в Kotlin?

sobes.tech AI

Отговор от AI

Ако се обърнете към nullable поле на обект без проверка за null, ще възникне изключение NullPointerException (NPE).

За безопасен достъп можете да използвате следните подходи:

  1. Оператор за безопасно извикване (?.): Връща null, ако обектът е null, иначе извършва извикването.

    // Да предположим, че user? е User?
    val userName: String? = user?.name
    
  2. Оператор за потвърждение на не-null (!!): Явно потвърждава, че обектът не е null. Ако е, се хвърля NullPointerException.

    // Използвайте съзнателно, може да доведе до NPE
    val userName: String = user!!.name
    
  3. Оператор Елвис (?:): Предоставя стойност по подразбиране, ако обектът отляво е null.

    val userName: String = user?.name ?: "Неизвестен потребител"
    
  4. Блокове if или when: Явна проверка за null.

    if (user != null) {
        val userName = user.name
    } else {
        // Обработка на случая, когато user е null
    }
    
  5. Функции let, run, apply, with с безопасно извикване:

    user?.let {
        // `it` в този блок е не-null `User`
        val userName = it.name
    }
    

Изборът на подход зависи от логиката на програмата и желаното поведение в случай, че обектът е null. Обикновено се препоръчва използването на оператора за безопасно извикване (?.) или оператора Елвис (?:) за избягване на NPE. Операторът !! трябва да се използва с повишено внимание.