例如:
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;
}
(通常)在运行时失败。试图返回 justnull
也会导致编译错误,所以我认为有多个路径会导致编译器推断出null
可能是自动装箱的int
?为什么 javac 不能编译这两种情况并出现相同的错误?