Sobes.tech
Middle

Je možné v Kotlinu získať NullPointerException?

sobes.tech AI

Odpoveď od AI

Áno, je to možné. Napriek prísnemu systéme typov a nullable typom (?) môže dôjsť k NullPointerException v nasledujúcich prípadoch:

  • Pri volaní Java kódu bez anotácií null-safety: Ak Java metóda vracia null a v Kotlinu je táto metóda volaná bez explicitnej kontroly na null, Kotlin môže vyhodiť NullPointerException pri pokuse o prístup k členom tohto objektu.

  • Použitie operátora !! (volanie s potvrdením non-null): Tento operátor jasne uvádza, že hodnota nemôže byť null. Ak je však null, bude vyhodený NullPointerException.

    // Príklad použitia operátora "!!"
    var nullableString: String? = null
    val nonNullString: String = nullableString!! // Vyhodí NullPointerException
    
  • Neinitializované premenné lateinit var: Ak premenná deklarovaná s kľúčovým slovom lateinit je použitá pred inicializáciou, bude vyhodená UninitializedPropertyAccessException, ktorá je podtriedou RuntimeException a svojou povahou je podobná NullPointerException.

  • Porušenie zmluvy @NonNull v Java kóde: Ak Java metóda označená @NonNull v skutočnosti vracia null, pri volaní z Kotlinu môže dôjsť k NullPointerException.

  • Problémy pri interoperabilite s C/C++: Kotlin kód môže komunikovať s nativným kódom cez JNI. Chyby v nativnom kóde alebo nesprávne zaobchádzanie s ukazovateľmi môžu viesť k pádom alebo NullPointerException v JVM.