为什么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;
}
答案 0 :(得分:5)
为什么java允许NPE?
表示例外条件(并允许程序员可能恢复)。
在您的示例中,Java允许autoboxing和unboxing。 null
将int
框添加到Integer
(然后取消装箱到int
)。