Spiega cos'è la sicurezza null nel linguaggio Kotlin.
sobes.tech AI
Risposta dell'AI
Sicurezza null — è una funzione del linguaggio Kotlin che previene errori legati a riferimenti null. Si ottiene creando due tipi di riferimenti: nullable (che permette null) e non-nullable (che non permette null).
I tipi non-nullable vengono dichiarati come di consueto:
var nonNullableString: String = "Hello" // Non può essere null
I tipi nullable vengono dichiarati usando il simbolo ? dopo il nome del tipo:
var nullableString: String? = "Hello" // Può essere null
nullableString = null
Kotlin richiede una gestione esplicita dei tipi nullable, evitando l'accesso diretto ai loro membri senza una verifica preliminare di null. Per questo, fornisce i seguenti meccanismi:
-
Operatore di chiamata sicura (
?.): Chiama un metodo o accede a una proprietà solo se l'oggetto non ènull. In caso contrario, restituiscenull.val length = nullableString?.length // length sarà Int? o null -
Operatore Elvis (
?:): Fornisce un valore di default se l'espressione a sinistra dell'operatore ènull.val nonNullLength = nullableString?.length ?: 0 // nonNullLength sarà Int, 0 se nullableString è null -
Operatore di affermazione di non-null (
!!): Converte un tipo nullable in non-nullable. Se il valore ènull, viene lanciata un'eccezioneNullPointerException. Si usa quando si è sicuri che il valore non sianull.val sureLength = nullableString!!.length // Lancerà NullPointerException se nullableString è null -
Controlli con if: Verifica tradizionale di
nullconif. Il compilatore effettua un smart cast (cast intelligente) del tipo nullable a non-nullable all'interno del bloccoif, se il controllo supera.if (nullableString != null) { val length = nullableString.length // Qui nullableString viene trattato come String }
Questi meccanismi permettono di gestire esplicitamente le situazioni in cui una variabile può essere null, riducendo significativamente la probabilità di NullPointerException in fase di esecuzione.