Обратите внимание на этот фрагмент кода:
private static void doSomething(Double avg, Double min, Double sd) {
final Double testMin;
if (avg != null) {
testMin = Math.max(min, avg - 3 * sd);
} else {
testMin = min;
}
System.out.println("testMin=" + testMin);
final Double verwachtMin = avg != null ? Math.max(min, avg - 3 * sd) : min;
System.out.println("verwachtMin=" + verwachtMin);
}
Насколько я знаю (и что мне может сказать моя IDE), переменные testMin
и verwachtMin
должны быть эквивалент.
Как и следовало ожидать, я лучше напишу последние 2 строки, чем первые 7. Однако, когда я передаю 3 нулевых значения в этот метод, я получаю NPE при вычислении verwachtMin
переменная
Кто-нибудь знает, как такое может случиться? Оценивает ли тернарный оператор вторую часть, даже если условие не истинно
?
(Java версии 1.6.0_21)