在三元运算符中出现了不需要的空指针异常 - 为什么?

16 浏览
0 Comments

在三元运算符中出现了不需要的空指针异常 - 为什么?

在执行下面的代码时,我在以下行收到一个NullPointerException:

value = condition ? getDouble() : 1.0;

在之前的行中,当我使用null代替getDouble()时,一切正常,这很奇怪。

public class Test {
    static Double getDouble() {
        return null;
    }
    public static void main(String[] args) {
        boolean condition = true;
        Double value;
        value = condition ? null : 1.0;         //正常运行
        System.out.println(value);              //打印null
        value = condition ? getDouble() : 1.0;  //抛出NPE
        System.out.println(value);
    }
}

有人能帮我理解这种行为吗?

0