Sobes.tech
Junior

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ść:

  1. Operator bezpiecznego wywołania (?.): Zwraca null, jeśli obiekt jest null, w przeciwnym razie wykonuje wywołanie.

    // Załóżmy, że user? to User?
    val userName: String? = user?.name
    
  2. Operator nie-null (!!): Wyraźnie potwierdza, że obiekt nie jest null. Jeśli jest, wyrzuca NullPointerException.

    // Używać świadomie, może prowadzić do NPE
    val userName: String = user!!.name
    
  3. Operator Elvis (?:): Dostarcza wartość domyślną, jeśli obiekt po lewej stronie operatora ?: jest null.

    val userName: String = user?.name ?: "Nieznany użytkownik"
    
  4. Bloki if lub when: Jawna kontrola na null.

    if (user != null) {
        val userName = user.name
    } else {
        // Obsługa przypadku, gdy user jest null
    }
    
  5. Funkcje let, run, apply, with z 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.