2011-11-17 27 views
6

Otrzymuję czasami NullPointerException z poniższej linii.Ternary Operator i nieoczekiwany wyjątek NullPointerException

System.out.println("Date::"+ row != null ? row.getLegMaturityDate() : "null"); 

Po dodaniu nawiasów jest w porządku.

System.out.println("Date::"+ (row != null ? row.getLegMaturityDate() : "null")); 

Proszę wyjaśnić mi zachowanie. Z góry dziękuję.

+0

Dlatego staram się ograniczać wyrażenia zagnieżdżania/wyrażenia w jak największym stopniu. Jeśli podzielisz zdanie na dwie, nie będziesz miał tego problemu. – helpermethod

Odpowiedz

13

"Date::" + row nigdy nie jest pusta, chociaż czasami jest row.

Oznacza to, że "Date::"+ row != null jest równoważne ("Date::"+ row) != null, co zawsze jest prawdziwe.

+0

Aby dodać do tego, należy spojrzeć na http://stackoverflow.com/questions/2137690/java-operator-precedence-guidelines –

+0

Dzięki Christoffer. Rozumiem. @Mike, dzięki za link, informacyjny. – Vaandu

Powiązane problemy