48 votes

NullPointerException indésirable dans l'opérateur ternaire - Pourquoi?

En exécutant le code suivant, j'obtiens un NullPointerException à la ligne:

 value = condition ? getDouble() : 1.0;

Dans les lignes précédentes, lorsque j'utilise null au lieu de getDouble() tout fonctionne et c'est étrange.

 public class Test {
    static Double getDouble() {
        return null;
    }

    public static void main(String[] args) {
        boolean condition = true;
        Double value;

        value = condition ? null : 1.0;         //works fine
        System.out.println(value);              //prints null

        value = condition ? getDouble() : 1.0;  //throws NPE
        System.out.println(value);
    }
}

Quelqu'un peut-il m'aider à comprendre ce comportement?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X