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
nullusandoif:fun printLength(str: String?) { if (str != null) { println(str.length) // Chiamata sicura dopo verifica di null } else { println("Stringa null") } } -
Operatore di chiamata sicura (
?.): Restituiscenullse 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 sianull.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àNullPointerExceptionse 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.