Maison > Java > javaDidacticiel > le corps du texte

Pourquoi un opérateur ternaire peut-il renvoyer Null dans une méthode Int, mais pas une instruction If ?

DDD
Libérer: 2024-11-05 22:12:02
original
780 Les gens l'ont consulté

Why Can a Ternary Operator Return Null in an Int Method, But an If Statement Can't?

Énigme de l'opérateur conditionnel : retours nuls dans l'instruction ternaire ou if

En Java, l'opérateur conditionnel (ternaire) pose un casse-tête intrigant lorsque traiter les types de retour de méthode. Considérez le code suivant :

<code class="java">public class Main {

    private int temp() {
        return true ? null : 0;
        // Compiler allows null return for int method
    }

    private int same() {
        if (true) {
            return null;
            // Compiler error: incompatible types
        } else {
            return 0;
        }
    }

}</code>
Copier après la connexion

Dans la méthode temp(), l'opérateur ternaire permet le retour de null même si la méthode est déclarée pour renvoyer un int. Ce comportement apparemment contre-intuitif s'explique par l'interprétation de null par le compilateur comme une référence null à un objet Integer. Il applique ensuite des règles de boxing/unboxing automatique pour l'opérateur conditionnel, ce qui entraîne le retour d'un objet Integer. Cependant, cette action masque une NullPointerException potentielle à l'exécution.

À l'inverse, tenter de représenter l'opérateur ternaire comme une instruction if dans la méthode same() déclenche une erreur de compilation en raison de types incompatibles. En effet, l'instruction if ne nous permet pas de renvoyer null pour une méthode de retour int.

Le nœud du puzzle réside dans la distinction entre l'opérateur ternaire et l'instruction if. L'opérateur ternaire nous permet de renvoyer des valeurs en fonction d'une condition, tandis que l'instruction if nous oblige à spécifier explicitement le type de retour. Par conséquent, l'opérateur ternaire peut introduire des retours nuls dans les méthodes int si nous n'y prêtons pas attention, tandis que l'instruction if applique une vérification de type qui garantit que la valeur renvoyée est compatible avec la signature de la méthode.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!