例えば:
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;
}
実行時に (通常) 失敗します。ただ返そうとするとコンパイル エラーが発生するため、複数のパスがあり、それが潜在的に autoboxednull
であるとコンパイラに推測させる何かがあると思います。javac が同じエラーで両方のケースのコンパイルに失敗しないのはなぜですか?null
int