Sobes.tech
Junior

Cosa sono i tipi 'nullable' in Kotlin e come funzionano?

sobes.tech AI

Risposta dell'AI

I tipi nullable in Kotlin sono tipi che possono contenere sia un valore che null. Sono indicati esplicitamente dal simbolo ? dopo il nome del tipo.

Il funzionamento si basa sul sistema di tipi di Kotlin, che previene NullPointerException durante la compilazione. Il compilatore richiede una verifica esplicita di null prima di accedere ai membri di un oggetto di tipo nullable.

Le principali modalità di lavorare in modo sicuro con i tipi nullable sono:

  • Verifica di null usando if:

    fun printLength(str: String?) {
        if (str != null) {
            println(str.length) // Chiamata sicura dopo verifica di null
        } else {
            println("Stringa null")
        }
    }
    
  • Operatore di chiamata sicura (?.): Restituisce null se l'oggetto è null, altrimenti il risultato della chiamata.

    val safeLength: Int? = str?.length // Se str è null, safeLength sarà null
    
  • Operatore Elvis (?:): Permette di fornire un valore predefinito nel caso in cui l'espressione a sinistra dell'operatore sia null.

    val lengthOrDefault: Int = str?.length ?: 0 // Se str è null, lengthOrDefault sarà 0
    
  • Operatore di affermazione non null (!!): Trasforma un tipo nullable in non nullable. Da usare con cautela, poiché lancerà NullPointerException se il valore è null.

    val assertedLength: Int = str!!.length // Lancerà NPE se str è null
    
  • Funzioni let/run/apply/also con chiamata sicura:

    str?.let {
        // Il codice verrà eseguito solo se str non è null
        println("Lunghezza della stringa: ${it.length}")
    }
    

Il sistema di tipi nullable di Kotlin aumenta significativamente la sicurezza e riduce la probabilità di NullPointerException rispetto ai linguaggi in cui null può essere assegnato a qualsiasi tipo senza indicazione esplicita.