Sobes.tech
Middle

Da li je moguće dobiti NullPointerException u Kotlinu?

sobes.tech АИ

Одговор од АИ

Da, moguće je. Uprkos strogoj sistemu tipova i nullable tipovima (?), NullPointerException može nastati u sledećim slučajevima:

  • Prilikom poziva Java koda bez anotacija za null-safety: Ako Java metoda vraća null, a u Kotlinu se ta metoda poziva bez eksplicitne provere na null, Kotlin može baciti NullPointerException prilikom pokušaja pristupa članovima tog objekta.

  • Korišćenje operatora !! (poziv sa potvrdom da nije null): Ovaj operator eksplicitno ukazuje da vrednost ne može biti null. Ako je ipak null, biće bačen NullPointerException.

    // Primer korišćenja operatora "!!"
    var nullableString: String? = null
    val nonNullString: String = nullableString!! // Baciti NullPointerException
    
  • Neinicijalizovane lateinit var promenljive: Ako promenljiva deklarisana sa ključnom rečju lateinit bude korišćena pre inicijalizacije, biće bačen UninitializedPropertyAccessException, koji je podklasa RuntimeException i po svojoj prirodi podseća na NullPointerException.

  • Prekoračenje ugovora @NonNull u Java kodu: Ako Java metoda anotirana sa @NonNull u stvari vraća null, pozivajući je iz Kotlin-a može doći do NullPointerException.

  • Problemi pri interoperabilnosti sa C/C++: Kotlin kod može komunicirati sa nativnim kodom putem JNI. Greške u nativnom kodu ili pogrešno upravljanje pokazivačima mogu dovesti do padova ili NullPointerException u JVM-u.