Sobes.tech
Junior

Leg uit wat null safety is in de Kotlin-taal.

sobes.tech AI

Antwoord van AI

Null safety — dit is een functie van de programmeertaal Kotlin die fouten gerelateerd aan null-verwijzingen voorkomt. Het wordt bereikt door twee typen referenties te creëren: nullable (toestaan null) en non-nullable (verbieden null).

Non-nullable types worden zoals gewoonlijk gedeclareerd:

var nonNullableString: String = "Hello" // Kan niet null zijn

Nullable types worden gedeclareerd met het symbool ? na de type naam:

var nullableString: String? = "Hello" // Kan null zijn
nullableString = null

Kotlin vereist expliciete handling van nullable types, waardoor directe toegang tot hun leden zonder voorafgaande null-controle wordt voorkomen. Hiervoor worden de volgende mechanismen gebruikt:

  1. Veilige aanroepoperator (?.): Roept een methode of eigenschap aan alleen als het object niet null is. Anders geeft het null terug.

    val length = nullableString?.length // length wordt Int? of null
    
  2. Elvis-operator (?:): Geeft een standaardwaarde terug als de uitdrukking links van de operator null is.

    val nonNullLength = nullableString?.length ?: 0 // nonNullLength wordt Int, 0 als nullableString null is
    
  3. Niet-null-assertie-operator (!!): Converteert een nullable type naar non-nullable. Als de waarde null is, wordt een NullPointerException gegooid. Gebruikt wanneer de ontwikkelaar zeker weet dat de waarde niet null is.

    val sureLength = nullableString!!.length // Gooit NullPointerException als nullableString null is
    
  4. if-controles: Traditionele controle op null met if. De compiler voert een slimme cast uit van nullable naar non-nullable binnen de if-blok, als de controle slaagt.

    if (nullableString != null) {
        val length = nullableString.length // Hier wordt nullableString behandeld als String
    }
    

Deze mechanismen maken het mogelijk om expliciet situaties te beheren waarin een variabele null kan zijn, wat de kans op NullPointerException tijdens het uitvoeren van het programma aanzienlijk vermindert.