Dlaczego poniższe wywołanie wyjątku NullPointerException? :Wyjątek NullPointerException w typie zwracającym typ Obiekt
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();
}
wiem czy zrobić jedną z następujących czynności kod nie będzie rzucać NullPointerException:
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();
}
Ponadto, jeśli zmienię cod e całkowicie i wykonaj następujące działania:
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();
}
Chyba kompilator robi jakąś optymalizację i jakoś brudząc rzeczy? Zakładam, że jest to jakiś problem z odlewaniem, ale dlaczego w takim przypadku wyrzuciłby wyjątek NullPointerException zamiast wyjątku ClassCastException? Wszelkie informacje o tym, dlaczego tak się dzieje, byłyby bardzo cenne!
góry dzięki
To rzucanie Wyjątek NullPointerException, ponieważ w tym paskudnym bałaganie jest pusty wskaźnik. –
To jest to, co początkowo myślałem, ale myślę, że warto na nie patrzeć, więc +1 – Bathsheba
@laune, rzuca 'NullPointerException'. –