为什么java允许NPE

时间:2016-01-17 09:05:28

标签: java

为什么javac不会在此代码上发出错误?

private static int compute(int v) {
    return v == 0 ? null : v;
}

当然,compute(0)会抛出NullPointerException。我希望java编译器通过做一些基本的静态代码分析来防止这种情况,就像它会阻止

一样
private static int compute(int v) {
    if (v == 0)
        return null;
    else
        return v;
}

1 个答案:

答案 0 :(得分:5)

  

为什么java允许NPE?

表示例外条件(并允许程序员可能恢复)。

在您的示例中,Java允许autoboxingunboxingnullint框添加到Integer(然后取消装箱int)。