Nullable versus non-nulltypen
De typeaanduiding ?.
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 StringNullable 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 canJe 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 allowedControleren 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 compileRetourtypen 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? = nullKorte 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.
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
- Nullable versus non-nulltypen
- Veilige aanroepen en Elvis
- let, also en scopefuncties
- NullPointerExceptions voorkomen