Wat gebeurt er als je toegang krijgt tot een nullable veld van een object in Kotlin?
sobes.tech AI
Antwoord van AI
Als je toegang krijgt tot een nullable veld van een object zonder te controleren op null, zal er een NullPointerException (NPE) optreden.
Voor veilige toegang kun je de volgende benaderingen gebruiken:
-
Veilige aanroepoperator (
?.): Geeftnullterug als het objectnullis, anders voert het de aanroep uit.// Stel dat user? een User is? val userName: String? = user?.name -
Niet-null bevestigingsoperator (
!!): Bevestigt expliciet dat het object nietnullis. Als dat wel zo is, wordt eenNullPointerExceptiongegooid.// Bewust gebruiken, kan leiden tot NPE val userName: String = user!!.name -
Elvis-operator (
?:): Biedt een standaardwaarde als het linkerobjectnullis.val userName: String = user?.name ?: "Onbekende gebruiker" -
ifofwhenblokken: Explicietenull-controle.if (user != null) { val userName = user.name } else { // Afhandeling voor het geval user null is } -
Functies
let,run,apply,withmet veilige aanroep:user?.let { // `it` binnen dit blok is een niet-nullbare `User` val userName = it.name }
De keuze van aanpak hangt af van de logica van het programma en het gewenste gedrag in het geval dat het object null is. Over het algemeen wordt aanbevolen om de veilige aanroepoperator (?.) of de Elvis-operator (?:) te gebruiken om NPE te voorkomen. De !!-operator moet met voorzichtigheid worden gebruikt.