为什么 Java 编译器有时允许取消装箱 null?
2022-09-03 06:05:58
例如:
int anInt = null;
在编译时失败,但
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println("" + getSomeVal());
}
}
public static int getSomeVal() {
return new Random().nextBoolean() ? 1 : null;
}
在运行时(通常)失败。尝试返回也会导致编译错误,所以我假设有多个路径会导致编译器推断出可能是自动装箱的?为什么javac不能失败编译两个案例具有相同的错误?null
null
int