Ciekawość, którą właśnie zauważyłem, a nie problem.Dlaczego zwracana jest wartość null (gdy oczekiwana jest wartość boolowska) w wyniku kompilacji przez operatora trójskładnikowego?
nie wolno mi napisać
public boolean x() {
return null;
}
czy to:
public boolean x() {
if (DEBUG) {
return true;
} else {
return null;
}
}
ale wolno mi napisać
public boolean x() {
return DEBUG ? true : null;
}
Dlaczego tak jest? (Wygląda na to, że wyrzuci NPE, jeśli zostanie pobrana gałąź "else".)
Dzięki @Thilo. Aby wyjaśnić: pytanie brzmi, dlaczego nie potrójny konstrukt został odrzucony w taki sam sposób jak dwa pozostałe przykłady? –
@MichaelKay Znowu, tylko z powodu przekleństw, czy próbowałeś 'public boolean x() { , jeśli (DEBUG) { zwraca true; } return null; } '? –
możliwe powtórzenie http://stackoverflow.com/questions/978324/java-ternary-immediate-if-evaluation? – Jens