返回 null 作为 int,允许使用三元运算符,但不允许使用 if 语句
2022-08-31 06:32:30
让我们看一下以下代码段中的简单 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()