Sobes.tech
Junior

Co se stane, když přistoupíte k nullable poli objektu v Kotlinu?

sobes.tech AI

Odpověď od AI

Pokud přistupujete k nullable poli objektu bez kontroly na null, dojde k výjimce NullPointerException (NPE).

Pro bezpečný přístup můžete použít následující přístupy:

  1. Operátor bezpečného volání (?.): Vrací null, pokud je objekt null, jinak provádí volání.

    // Předpokládejme, že user? je uživatel?
    val userName: String? = user?.name
    
  2. Operátor potvrzení nenull (!!): Výslovně potvrzuje, že objekt není null. Pokud je, vyhodí NullPointerException.

    // Použít vědomě, může vést k NPE
    val userName: String = user!!.name
    
  3. Elvisův operátor (?:): Poskytuje výchozí hodnotu, pokud je levý objekt null.

    val userName: String = user?.name ?: "Neznámý uživatel"
    
  4. Bloky if nebo when: Explicitní kontrola na null.

    if (user != null) {
        val userName = user.name
    } else {
        // Zpracování případu, kdy je user null
    }
    
  5. Funkce let, run, apply, with s bezpečným voláním:

    user?.let {
        // `it` uvnitř tohoto bloku je nenullovatelné `User`
        val userName = it.name
    }
    

Volba přístupu závisí na logice programu a požadovaném chování v případě, že je objekt null. Obecně se doporučuje používat operátor bezpečného volání (?.) nebo Elvisův operátor (?:) k prevenci NPE. Operátor !! by měl být používán s opatrností.