java: weird NullPointerException в тернарном операторе (?:)

Обратите внимание на этот фрагмент кода:

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)

12
задан geronimo 9 March 2011 в 13:55
поделиться