Junior — Middle
Quelles sont les nuances de l'utilisation du type Nothing dans les génériques?
sobes.tech IA
Réponse de l'IA
Le type Nothing en Kotlin est un type spécial qui n'a pas de valeurs et est utilisé pour indiquer des fonctions qui ne retournent jamais de résultat (par exemple, qui lèvent une exception ou s'exécutent indéfiniment).
Dans le contexte des génériques (generics), Nothing joue un rôle important :
- Utilisé comme limite inférieure du type —
Nothingest un sous-type de tous les types, il peut donc être utilisé pour indiquer qu'un paramètre de type ne peut pas avoir de valeurs. - Permet d'exprimer l'absence de valeur — par exemple,
List<Nothing>est une liste qui ne peut contenir aucun élément. - Utilisé pour indiquer en toute sécurité l'absence de type dans des positions covariantes.
Exemple d'utilisation dans les génériques :
fun <T> fail(): T {
throw RuntimeException("Failure")
}
val x: String = fail() // Le compilateur comprend que fail() retourne Nothing, qui est un sous-type de String
Ou dans les collections :
val emptyList: List<Nothing> = listOf()
Ainsi, Nothing aide le compilateur à comprendre qu'il n'y aura pas de valeurs dans certains endroits, et permet de travailler en toute sécurité avec ces cas dans les génériques.