Co się stanie, jeśli odwołasz się do nullable pola obiektu w Kotlin?
sobes.tech AI
Odpowiedź od AI
Jeśli odwołasz się do nullable pola obiektu bez sprawdzenia na null, wystąpi wyjątek NullPointerException (NPE).
Aby bezpiecznie się odwołać, można użyć następujących podejść:
-
Operator bezpiecznego wywołania (
?.): Zwracanull, jeśli obiekt jestnull, w przeciwnym razie wykonuje wywołanie.// Załóżmy, że user? to User? val userName: String? = user?.name -
Operator nie-null (
!!): Wyraźnie potwierdza, że obiekt nie jestnull. Jeśli jest, wyrzucaNullPointerException.// Używać świadomie, może prowadzić do NPE val userName: String = user!!.name -
Operator Elvis (
?:): Dostarcza wartość domyślną, jeśli obiekt po lewej stronie operatora?:jestnull.val userName: String = user?.name ?: "Nieznany użytkownik" -
Bloki
iflubwhen: Jawna kontrola nanull.if (user != null) { val userName = user.name } else { // Obsługa przypadku, gdy user jest null } -
Funkcje
let,run,apply,withz bezpiecznym wywołaniem:user?.let { // `it` w tym bloku jest non-nullowalnym `User` val userName = it.name }
Wybór podejścia zależy od logiki programu i pożądanego zachowania w przypadku, gdy obiekt jest null. Zazwyczaj zaleca się używanie operatora bezpiecznego wywołania (?.) lub operatora Elvis (?:) w celu uniknięcia NPE. Operator !! należy używać ostrożnie.