Ich habe den folgenden Code-Snippet, das stört mich verursacht, wo currentRate und secondCurrentRate sind Doppel Objekte, korrekt definiert:Doppel = null verursacht eine Nullpointer
(currentRate != null && secondCurrentRate != null) ? currentRate * secondCurrentRate : null;
Dies sollte sich jeder für null Überprüfen -ness und weisen Sie den Wert entsprechend null zu. Wenn secondCurrentRate jedoch null ist, verursacht dies eine NullPointerException. Ich habe das Snippet dies geändert:
(currentRate == null | secondCurrentRate == null) ? null : currentRate * secondCurrentRate;
Und das funktioniert wie erwartet. Meine Frage ist, warum passiert das? Ich könnte es verstehen, wenn ich eine Methode für die Objekte aufrufen würde, aber mein Verständnis war, dass NullPointerExceptions ausgelöst wurden, wenn eine Methode für ein Null-Objekt aufgerufen wurde. Es gibt ein Null-Objekt, aber es gibt keinen Methodenaufruf.
Kann mir jemand einen Einblick geben? Dies läuft in Java 5.
In Ihrem zweiten Snippet ist es "||" oder "|"? –
@ Thierry-Dimitri Roy es ist das gleiche in diesem Fall. –
Bitte geben Sie ein kurzes, aber vollständiges Programm an, das das Problem aufzeigt. –