Пожалуйста, примите во внимание этот фрагмент кода:
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
.
Кто-нибудь знает, как это может произойти?Оценивает ли троичный оператор 2-ю часть, даже если условие не true
?
(версия Java 1.6.0_21)