Тернарный оператор и неожиданное исключение NullPointerException - PullRequest
6 голосов
/ 17 ноября 2011

Иногда я получаю NullPointerException из строки ниже.

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

После добавления скобок это нормально.

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

Пожалуйста, уточните мне поведение. Заранее спасибо.

Ответы [ 2 ]

13 голосов
/ 17 ноября 2011

"Date::" + row никогда не равно нулю, хотя row иногда равно.

То есть "Date::"+ row != null эквивалентно ("Date::"+ row) != null, что всегда верно.

2 голосов
/ 17 ноября 2011

Это вопрос приоритета оператора. Christoffer Hammarström имеет исполнительное резюме.Смотрите эту страницу http://bmanolov.free.fr/javaoperators.php для более подробной информации.

...