Java-ternäre (sofortige if) Auswertung
Ich kann nicht finden den relevanten Abschnitt aus der spec, diese zu beantworten.
In einem bedingten operator-Anweisung in Java, werden sowohl die wahren und falschen Argumente bewertet?
So könnte man das folgende werfen einer NullPointerException
Integer test = null;
test != null ? test.intValue() : 0;
InformationsquelleAutor der Frage Mike Pone | 2009-06-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie wollten, dass die Skillung, hier ist es (aus §15.25 Bedingte Operator ? : der Letzte Satz des Abschnitts):
InformationsquelleAutor der Antwort Michael Myers
Nein, es konnte nicht. Das ist das gleiche wie:
InformationsquelleAutor der Antwort stevedbrown
Ich weiß, es ist alt der post, aber Blick auf die sehr ähnlichen Fall, und dann Stimmen Sie mir 😛
Beantwortung der ursprünglichen Frage : es ist nur ein operand ausgewertet wird, ABER:
Dieser test wird werfen
NullPointerException
immer und in diesem Fall, WENN statemat ist nicht gleichbedeutend mit ?: Betreiber.Der Grund ist hier http://docs.oracle.com/javase/specs/jls/se5.0/html/expressions.html#15.25. Der Teil über das boxing/unboxing ist verwickelt, aber es kann leicht verstanden sehen:
Gleiches gilt für
Integer.intValue()
Beste Grüße!
InformationsquelleAutor der Antwort Michał Króliczek
die syntax ist falsch .
Integer test = (test != null) ? test.intValue() : 0;
hoffe es hilft ....
InformationsquelleAutor der Antwort Idan