返回NULL作为三元运算符允许的int,但不允许if语句让我们看一下以下代码片段中的简单Java代码:public class Main {
private int temp() {
return true ? null : 0;
// No compiler error - the compiler allows a return value of null
// in a method signature that returns an int.
}
private int same() {
if (true) {
return null;
// The same is not possible with if,
// and causes a compile-time error - incompatible types.
} else {
return 0;
}
}
public static void main(String[] args) {
Main m = new Main();
System.out.println(m.temp());
System.out.println(m.same());
}}在最简单的Java代码中,temp()方法不会发出编译器错误,即使函数的返回类型为int,我们正在尝试返回值。null(通过声明return true ? null : 0;)。在编译时,这显然会导致运行时异常。NullPointerException.但是,如果我们用if语句(如same()方法),其中是吗?发出编译时错误!为什么?
3 回答

阿波罗的战车
TA贡献1862条经验 获得超6个赞
null
Integer
NullPointerException
添加回答
举报
0/150
提交
取消