Kotlin Academy · Leçon

Types nullables et modificateur ?

Déclarez des variables nullables et comprenez la sécurité vis-à-vis de null de Kotlin lors de la compilation.

Leçon 1 sur 413 étapes

Types nullables et modificateur ? est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.

Sécurité vis-à-vis de null dans Kotlin

Kotlin distingue, lors de la compilation, les types qui peuvent contenir null de ceux qui ne le peuvent pas. Le compilateur empêche la plupart des NullPointerExceptions avant l’exécution.

Type non nullable

Par défaut, un type Kotlin ne peut pas contenir null. Si vous essayez d’affecter null, le compilateur refuse.

fun main() {
    val name: String = "Ada"
    // val nope: String = null // ERROR
    println(name)
}

Type nullable avec ?

Ajoutez ? pour autoriser null. Le compilateur considère alors la variable comme pouvant être absente.

fun main() {
    val name: String? = null
    println(name) // null
}

Appeler des méthodes sur des valeurs nullables

Vous ne pouvez pas appeler directement une méthode sur une valeur nullable sans gérer d’abord le cas null. Le compilateur refuse.

fun main() {
    val name: String? = "Bob"
    // println(name.length) // ERROR — name might be null
    if (name != null) println(name.length) // smart cast
}

Conversions intelligentes de types

Après une vérification if (x != null), Kotlin convertit intelligemment x en valeur non nullable dans la branche concernée.

fun main() {
    val name: String? = "Alice"
    if (name != null) {
        println("Length: ${name.length}") // safe, smart-cast
    } else {
        println("No name")
    }
}

Paramètre de fonction nullable

Déclarez les paramètres de fonction comme nullables lorsqu’ils peuvent être absents. L’appelant doit fournir explicitement une valeur ou null.

fun greet(name: String?) {
    if (name == null) println("Hello, stranger")
    else println("Hello, $name")
}
fun main() {
    greet("Sara")
    greet(null)
}

Type de retour nullable

Une fonction qui renvoie X? indique à l’appelant qu’elle peut renvoyer null : celui-ci doit le gérer.

fun findUser(id: Int): String? {
    return if (id == 1) "Alice" else null
}
fun main() {
    val u = findUser(2)
    println(u ?: "no user")
}

Propriétés nullables

Les propriétés d’une classe peuvent également être nullables. C’est courant lorsque les champs sont remplis ultérieurement ou récupérés de manière facultative.

data class Profile(
    val name: String,
    val avatarUrl: String?
)
fun main() {
    val p = Profile("Lee", null)
    println(p.avatarUrl ?: "(no avatar)")
}

Collections nullables

Distinguez une liste nullable List<T>? d’une liste de valeurs nullables List<T?>. Elles représentent des situations différentes.

fun main() {
    val maybeList: List<Int>? = null
    val listOfMaybe: List<Int?> = listOf(1, null, 3)
    println(maybeList?.size)     // null
    println(listOfMaybe.size)    // 3
}

Comparaison avec Java

Les types Java utilisés dans Kotlin apparaissent comme des types de plateforme (String!) : Kotlin vous fait confiance, mais n’offre aucune sécurité vis-à-vis de null. Annotez toujours les API Java avec @Nullable/@NotNull lorsque c’est possible.

fun main() {
    val maybeNull: String? = System.getenv("FOO") // null if unset
    println("env FOO = ${maybeNull ?: "(unset)"}")
}

Pourquoi est-ce important&nbsp;?

La sécurité vis-à-vis de null lors de la compilation empêche toute une catégorie de plantages à l’exécution. Adoptez le modificateur ? : il documente l’intention et impose la gestion du cas null.

fun divide(a: Int, b: Int): Int? = if (b == 0) null else a / b
fun main() {
    val r1 = divide(10, 2) // 5
    val r2 = divide(10, 0) // null — handled at call site
    println("$r1, $r2")
}

Vérification rapide

Que signifie le ? à la fin de la déclaration d’un type ?

Récapitulatif

Par défaut, les types Kotlin sont non nullables. Ajoutez ? pour autoriser null. Le compilateur impose la gestion de null grâce aux conversions intelligentes de types, aux appels sûrs et à l’opérateur Elvis, ce qui évite la plupart des NullPointerExceptions avant l’exécution.

Gratuit pour commencer

Apprends Kotlin avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
51
Leçons
203

Questions Fréquemment Posées

La leçon « Types nullables et modificateur ? » est-elle gratuite ?

Oui — le texte complet de « Types nullables et modificateur ? » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Types nullables et modificateur ? » ?

Déclarez des variables nullables et comprenez la sécurité vis-à-vis de null de Kotlin lors de la compilation. Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Kotlin Academy ?

Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Types nullables et modificateur ? » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?

Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Types nullables et modificateur ?
  2. Appel sécurisé ?. et Elvis ?: en pratique
  3. let, also et run avec des récepteurs nullables
  4. Opérateur !! : quand et pourquoi l’éviter
← Retour à Kotlin Academy