許可しないのは合理的なようです
int a = 8;
boolean b = (boolean)a;
結果として得られるブール値は整数でもfalseになるため、プログラマーエラーにつながる可能性がありますが、拡張強制が機能しないのはなぜint a = true
ですか?
編集:
JVM仕様によると、セクション3.3.4:
Java仮想マシンは、ブール配列コンポーネントをエンコードします。1はtrueを表し、0はfalseを表します。Javaプログラミング言語のブール値がコンパイラによってJava仮想マシンタイプintの値にマップされる場合、コンパイラは同じエンコーディングを使用する必要があります。
例えば:
public static boolean returnFalse() {
return false;
}
public static boolean returnTrue() {
return true;
}
コンパイル先:
public static boolean returnFalse();
Code:
0: iconst_0
1: ireturn
public static boolean returnTrue();
Code:
0: iconst_1
1: ireturn