Sobes.tech
Junior

Wat zijn 'nullable' types in Kotlin en hoe werken ze?

sobes.tech AI

Antwoord van AI

Nullable types in Kotlin zijn types die zowel een waarde als null kunnen bevatten. Ze worden expliciet aangeduid met het symbool ? na de type naam.

De werking is gebaseerd op het type systeem van Kotlin, dat NullPointerException tijdens de compilatie voorkomt. De compiler vereist een expliciete controle op null voordat je toegang krijgt tot de leden van een nullable object.

De belangrijkste manieren om veilig met nullable types te werken:

  • Controle op null met if:

    fun printLength(str: String?) {
        if (str != null) {
            println(str.length) // Veilige aanroep na null-controle
        } else {
            println("String null")
        }
    }
    
  • Veilige aanroep operator (?.): Geeft null terug als het object null is, anders het resultaat van de aanroep.

    val safeLength: Int? = str?.length // Als str null is, wordt safeLength null
    
  • Elvis operator (?:): Biedt een standaardwaarde als de uitdrukking links van de operator null is.

    val lengthOrDefault: Int = str?.length ?: 0 // Als str null is, wordt lengthOrDefault 0
    
  • Operator voor expliciete niet-null bevestiging (!!): Zet een nullable type om in een niet-nullable type. Voorzichtig gebruiken, want het gooit een NullPointerException als de waarde null is.

    val assertedLength: Int = str!!.length // Gooi NPE als str null is
    
  • Functies let/run/apply/also met veilige aanroep:

    str?.let {
        // Code wordt alleen uitgevoerd als str niet null is
        println("Lengte van de string: ${it.length}")
    }
    

Het nullable types systeem van Kotlin verhoogt de veiligheid aanzienlijk en vermindert de kans op NullPointerException vergeleken met talen waar null zonder expliciete aanduiding aan elk type kan worden toegewezen.