Ich verwende gerne den ternären bedingten Ausdruck in Java-Programmierung, aber ich habe ein Problem festgestellt:Warum verursacht ein ternärer Bedingungsausdruck, der null zurückgibt und einem Referenztyp zugewiesen ist, eine NullPointerException?
Der folgende Code ist ein kleines Beispiel, aber es zeigt das Problem, das ich gefunden habe.
public class Example {
public Example() {
Double x = 0.0;
A a = new A();
x = a == null ? 0.0 : a.getY(); // Happens on this line
System.out.println(x);
}
class A {
Double y = null;
private Double getY() {
return y;
}
}
public static void main(String[] args) {
new Example();
}
}
Was verursacht die NullPointerException
?
Wo liegt if-then-else? –
Sie haben dort keine 'if-then-else'-Anweisung. Sie haben einen * ternären Operator *. – Andreas
Eine nicht-triviale NPE-Frage! –