Sobes.tech
Middle

Lze v Kotlinu získat NullPointerException?

sobes.tech AI

Odpověď od AI

Ano, je to možné. Navzdory přísnému systému typů a nullable typům (?) může dojít k NullPointerException v následujících případech:

  • Volání Java kódu bez anotací null-safety: Pokud Java metoda vrací null a v Kotlinu je tato metoda volána bez explicitní kontroly na null, může Kotlin vyvolat NullPointerException při pokusu o přístup ke členům tohoto objektu.

  • Použití operátoru !! (volání s potvrzením non-null): Tento operátor jasně uvádí, že hodnota nemůže být null. Pokud je však null, bude vyvolána NullPointerException.

    // Příklad použití operátoru "!!"
    var nullableString: String? = null
    val nonNullString: String = nullableString!! // Vyvolá NullPointerException
    
  • Neinitializované proměnné lateinit var: Pokud je proměnná deklarovaná s klíčovým slovem lateinit použita před inicializací, bude vyvolána UninitializedPropertyAccessException, což je podtřída RuntimeException a svou povahou je podobná NullPointerException.

  • Porušení kontraktu @NonNull v Java kódu: Pokud Java metoda označená @NonNull ve skutečnosti vrací null, při volání z Kotlinu může dojít k NullPointerException.

  • Problémy při interoperabilitě s C/C++: Kotlin kód může komunikovat s nativním kódem přes JNI. Chyby v nativním kódu nebo nesprávné zacházení s ukazateli může vést k pádům nebo NullPointerException v JVM.