Android Academy · Les

Nullable versus non-nulltypen

De typeaanduiding ?.

Les 1 van 413 stappen

Nullable versus non-nulltypen is een gratis Android Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Android Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Android Academy bevat in totaal 4 lessen.

Waarom nullveiligheid belangrijk is

Veel crashes in Android-apps ontstaan door één fout: een waarde gebruiken die in werkelijkheid ontbreekt. In andere talen leidt dit tijdens runtime tot een gevreesde NullPointerException.

Kotlin pakt dit tijdens het compileren aan. Het typesysteem houdt bij welke waarden null kunnen zijn en welke nooit null kunnen zijn. Deze les introduceert de basis van dat systeem.

Niet-nulltypen

Standaard kan een Kotlin-type geen null bevatten. Een String verwijst altijd naar een echte tekenreeks.

Als je null eraan probeert toe te wijzen, wordt de code niet eens gecompileerd. Dit is de veilige standaard.

fun main() {
    val name: String = "Ada"
    println(name.length)
}

Null wordt afgewezen

Bekijk wat er gebeurt wanneer je null in een niet-nulltype probeert te plaatsen.

De compiler houdt je onmiddellijk tegen. Je bereikt runtime nooit met een verborgen fout.

val name: String = null  // Compile error:
// Null can not be a value of a non-null type String

Nullable typen met ?

Soms kan een waarde echt ontbreken, zoals de optionele tweede voornaam van een gebruiker. Je kiest hiervoor door ? aan het type toe te voegen.

Een String? kan een echte tekenreeks of null bevatten. Het vraagteken markeert het type als nullable.

fun main() {
    val middleName: String? = null
    println(middleName)
}

Twee verschillende typen

String en String? zijn niet hetzelfde type. Het tweede is een ruimer type dat de waarde null bevat.

Dankzij dit onderscheid kan de compiler je beschermen. Deze weet precies waar null kan voorkomen.

val sure: String = "hello"
val maybe: String? = "hello"
// maybe could later be null; sure never can

Je kunt nullable niet rechtstreeks gebruiken

De compiler staat niet toe dat je een methode aanroept op een nullable waarde zonder deze eerst te controleren.

Omdat middleName null kan zijn, veroorzaakt het aanroepen van .length daarop een compilatiefout. Je moet het null-geval afhandelen.

val middleName: String? = null
println(middleName.length)
// Error: only safe (?.) or non-null (!!) calls allowed

Controleren met if

De eenvoudigste manier om een nullable waarde te gebruiken, is deze controleren met een if-voorwaarde.

Binnen de tak waarin je hebt bewezen dat de waarde niet null is, voert Kotlin hierop een smart cast uit naar een niet-nulltype, zodat .length werkt.

fun main() {
    val text: String? = "Kotlin"
    if (text != null) {
        println(text.length)
    }
}

Smart casts

Na een geslaagde nullcontrole onthoudt de compiler dat de waarde voor de rest van dat blok niet null is. Dit heet een smart cast.

Je hebt geen conversie geschreven. Kotlin houdt dit automatisch voor je bij.

fun describe(s: String?) {
    if (s == null) return
    // s is now treated as String here
    println("Length is " + s.length)
}

Functieparameters

Of een parameter nullable is, maakt deel uit van het contract van de functie. Een niet-nullparameter belooft aan aanroepers dat deze nooit null ontvangt.

Een nullable parameter geeft aan dat ontbrekende invoer wordt verwacht en afgehandeld.

fun greet(name: String) {
    println("Hi, " + name)
}
// greet(null) would not compile

Retourtypen kunnen nullable zijn

Een functie kan null retourneren om aan te geven dat er niets is gevonden. Markeer het retourtype met ?.

Aanroepers weten dan dat ze het resultaat moeten controleren voordat ze het gebruiken.

fun firstChar(s: String): Char? {
    if (s.isEmpty()) return null
    return s[0]
}

Geef standaard de voorkeur aan niet-null

Een goede regel: geef de voorkeur aan niet-nulltypen. Voeg ? alleen toe wanneer een waarde echt kan ontbreken.

Zo blijft je code eerlijk. Hoe minder nullable typen je hebt, hoe minder nullcontroles je later nodig hebt.

// Prefer this:
val score: Int = 0
// Over this, unless null is meaningful:
val maybeScore: Int? = null

Korte controle

Test je begrip van nullable en niet-nulltypen.

Samenvatting

Kotlin-typen zijn standaard niet-null en weigeren null tijdens het compileren. Voeg ? toe om een type nullable te maken wanneer een waarde kan ontbreken.

Je kunt een nullable waarde niet rechtstreeks gebruiken. Een nullcontrole voert een smart cast uit naar niet-null, zodat je de waarde veilig kunt gebruiken. Hierna leer je kortere manieren om met nullable waarden om te gaan.

Gratis beginnen

Leer Kotlin met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
36
Lessen
152

Veelgestelde vragen

Is de les “Nullable versus non-nulltypen” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Android Academy, waaronder “Nullable versus non-nulltypen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Android Academy bevat in totaal 4 lessen.

Wat leer ik in “Nullable versus non-nulltypen”?

De typeaanduiding ?. Je oefent met Android Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Android Academy te beginnen?

Ervaring vooraf is niet nodig. Android Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Nullable versus non-nulltypen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Android Academy?

Ja. Elke les over Android Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Nullable versus non-nulltypen
  2. Veilige aanroepen en Elvis
  3. let, also en scopefuncties
  4. NullPointerExceptions voorkomen
← Terug naar Android Academy