3 votes

Comment se fait-il que la méthode retournant un booléen compile toujours lorsque return utilise un opérateur ternaire ?

Comment se fait-il que ce code se compile ? Je me serais attendu à ce que le compilateur se plaigne d'un "Type mismatch : cannot convert from null to boolean" mais il ne le fait pas. Il échoue simplement avec une NullPointerException au moment de l'exécution.

public static void main(String[] args) throws Exception {
    System.out.println("this throws a NPE: " + whyIsThisPossible(1, 2));
}

private static boolean whyIsThisPossible(int a, int b) {
    return a + b == 2 ? true : null;
}

Exception in thread "main" java.lang.NullPointerException
at FunkyMethodTest.whyIsThisPossible(FunkyMethodTest.java:10)
at FunkyMethodTest.main(FunkyMethodTest.java:5)*

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