Mam następujący fragment kodu, który jest przyczyną mnie niepokoić, gdzie currentRate i secondCurrentRate są podwójne obiekty, poprawnie zdefiniowane:Podwójne = null powoduje NullPointerException
(currentRate != null && secondCurrentRate != null) ? currentRate * secondCurrentRate : null;
ten powinien sprawdzić każdy każdy Pokój dla wartości null -ness i odpowiednio przypisz wartość zerową. Jednak jeśli parametr secondCurrentRate ma wartość NULL, powoduje to wyjątek NullPointerException. zmieniłem fragment to:
(currentRate == null | secondCurrentRate == null) ? null : currentRate * secondCurrentRate;
I to działa zgodnie z oczekiwaniami. Moje pytanie brzmi: dlaczego tak się dzieje? Mogłem to zrozumieć, gdybym wywoływał jakąś metodę na obiektach, ale zrozumiałem, że wyrzucano NullPointerExceptions, gdy metoda została wywołana na obiekcie zerowym. Istnieje obiekt zerowy, ale nie ma wywołania metody.
Czy ktoś może wnieść w to wgląd? To działa w Javie 5.
W Twoim drugim fragmencie, czy jest to "||" lub "|"? –
@ Thierry-Dimitri Roy to w tym przypadku to samo. –
Proszę podać krótki, ale kompletny program, który demonstruje problem. –