Sobes.tech
Middle

Kan je in Kotlin een NullPointerException krijgen?

sobes.tech AI

Antwoord van AI

Ja, dat is mogelijk. Ondanks het strikte typesysteem en de nullable types (?), kan een NullPointerException optreden in de volgende gevallen:

  • Bij het aanroepen van Java-code zonder null-safety annotaties: Als een Java-methode null retourneert en deze wordt in Kotlin aangeroepen zonder expliciete null-controle, kan Kotlin een NullPointerException werpen bij het proberen toegang te krijgen tot de leden van dat object.

  • Gebruik van de operator !! (non-null asserted call): Deze operator geeft expliciet aan dat de waarde niet null kan zijn. Als dat toch het geval is, wordt een NullPointerException geworpen.

    // Voorbeeld van gebruik van de operator "!!"
    var nullableString: String? = null
    val nonNullString: String = nullableString!! // Werpt NullPointerException
    
  • Niet geïnitialiseerde lateinit var variabelen: Als een met lateinit gedeclareerde variabele wordt gebruikt voordat deze geïnitialiseerd is, wordt een UninitializedPropertyAccessException geworpen, die een subklasse is van RuntimeException en qua aard lijkt op een NullPointerException.

  • Overtreding van het @NonNull contract in Java-code: Als een Java-methode met @NonNull in werkelijkheid null retourneert, kan er een NullPointerException optreden bij het aanroepen ervan vanuit Kotlin.

  • Problemen bij interoperabiliteit met C/C++: Kotlin-code kan via JNI communiceren met native code. Fouten in native code of verkeerd gebruik van pointers kunnen leiden tot crashes of NullPointerException in de JVM.