久々にJavaをやっていたらこんなものに遭遇しました。 なぜこんなコーディングするの?というツッコミはなしで(笑)
public static void main(String[] args) {
int a = 0;
if(a instanceof Integer) {
System.out.println(a);
}
}
Eclipseからコンパイルしても警告がでません。だけどコマンドラインから
>javac Hoge.java
とやると
Hoge.java:4: 予期しない型
検出値 : int
期待値 : 参照
if(a instanceof Integer) {
^
エラー 1 個
値型と参照型を比較しようとしているからエラーになるのが正しいはずです。 Eclipseはコンパイルが通ったように見せますが、実際にはコンパイルは通らないので 中間コードは生成されません。なので、実行しようとしてもMainが見つかりません エラーが出ちゃうんですよね。
intをIntegerにすれば当然実行できます。