Ocena zwarcia w języku Java
Myślałem, że Java ma ocenę zwarć, ale ta linia nadal rzuca wyjątek zerowego wskaźnika:
if( (perfectAgent != null) && (perfectAgent.getAddress().equals(entry.getKey())) ) {
W tym przypadkuperfectAgent
jestnull
, więc chcę tylko, aby całe wyrażenie powróciłofalse
, ale moja aplikacja nadal zawiesza się w tej linii z wyjątkiem NullPointerException.
EDIT, ogólna odpowiedź:
OdperfectAgent
jestnull
, nic na prawo od&&
powinno być wykonane, ponieważ niemożliwe jest, aby wyrażenie było prawdziwe. Co więcej, niemożliwe jest wykonanieperfectAgent.getAddress()
odperfectAgent
nie zawiera poprawnego odwołania (jest puste i wszystkie). Próbuję użyć oceny zwarcia, aby nie sprawdzać wartości null w oddzielnej instrukcji, ponieważ powoduje to, że logika jest bardziej niechlujna.
EDIT 2 (lub jestem idiotą): Tak, jak wiele rzeczy w życiu, wymyślasz odpowiedź zaraz po ogłoszeniu światu, że jesteś kretynem. W tym przypadku wyłączyłem autobuild Eclipse podczas robienia czegoś innego i nie włączyłem go ponownie, więc debugowałem pliki klas, które nie pasowały do mojego źródła.