この単純な Java コードを見てください。
class A {
public static void main(String[] args) {
final int x;
try {
throw new RuntimeException();
x = 1;
} finally {}
x = 2;
System.out.println("x: " + x);
}
}
「x:2」と出力されると思います。
A.java:6: unreachable statement
x = 1;
^
A.java:8: variable x might already have been assigned
x = 2;
^
2 errors
8行目で最終変数を再割り当てx = 2
する可能性があるため、コンパイルできないと言われていますが、上記のように、行に到達できないため、再割り当てではなく初めて割り当てられるため、これは誤りです。x = 1
コンパイラは、x が割り当てられていないことがわかっているのに、「x は既に割り当てられている可能性があります」というエラーを出すのはなぜx
ですか?