Warum nach dem eine Nullpointer werfen? :Nullpointer in Verfahren Rückkehr Typ Object
public static Object myTest() {
boolean x = false;
boolean y = false;
return x && y ? new Object() : x ? x : y ? y : null;
}
public static void main(String [ ] args) {
myTest();
}
Ich weiß, wenn ich eine der folgenden Bedingungen den Code tun wird keine Nullpointer werfen:
A)
public static Object myTest() {
boolean x = false;
boolean y = false;
return x && y ? new Object() : x ? x : y ? y : (Object) null;
}
public static void main(String [ ] args) {
myTest();
}
B)
public static Object myTest() {
Boolean x = false;
Boolean y = false;
return x && y ? new Object() : x ? x : y ? y : null;
}
public static void main(String [ ] args) {
myTest();
}
Auch wenn ich den Kabeljau ändere e vollständig und Sie wie folgt funktioniert:
public static Object myTest() {
boolean x = false;
boolean y = false;
if(x && y) {
return new Object();
} else if(x) {
return x;
} else if(y) {
return y;
} else {
return null;
}
}
public static void main(String [ ] args) {
myTest();
}
Ich denke, der Compiler eine Art von einer Optimierung tut und irgendwie Dinge vermasselt? Ich nehme an, es so etwas wie ein Casting Problem, aber warum sollte es eine Nullpointer in diesem Fall statt einer Classcast werfen? Jede Information darüber, warum dies geschieht, würde sehr geschätzt werden!
Vielen Dank im Voraus
Es wirft ein NullPointerException, weil irgendwo ein Null-Zeiger in diesem gottverdammten Durcheinander ist –
Das dachte ich anfangs, aber ich denke, es lohnt sich zu betrachten, also +1 – Bathsheba
@laune, es wirft eine "NullPointerException". –