Какво се случва, ако се обърнете към nullable поле на обект в Kotlin?
sobes.tech AI
Отговор от AI
Ако се обърнете към nullable поле на обект без проверка за null, ще възникне изключение NullPointerException (NPE).
За безопасен достъп можете да използвате следните подходи:
-
Оператор за безопасно извикване (
?.): Връщаnull, ако обектът еnull, иначе извършва извикването.// Да предположим, че user? е User? val userName: String? = user?.name -
Оператор за потвърждение на не-null (
!!): Явно потвърждава, че обектът не еnull. Ако е, се хвърляNullPointerException.// Използвайте съзнателно, може да доведе до NPE val userName: String = user!!.name -
Оператор Елвис (
?:): Предоставя стойност по подразбиране, ако обектът отляво еnull.val userName: String = user?.name ?: "Неизвестен потребител" -
Блокове
ifилиwhen: Явна проверка заnull.if (user != null) { val userName = user.name } else { // Обработка на случая, когато user е null } -
Функции
let,run,apply,withс безопасно извикване:user?.let { // `it` в този блок е не-null `User` val userName = it.name }
Изборът на подход зависи от логиката на програмата и желаното поведение в случай, че обектът е null. Обикновено се препоръчва използването на оператора за безопасно извикване (?.) или оператора Елвис (?:) за избягване на NPE. Операторът !! трябва да се използва с повишено внимание.