トップ «前の日記(2005-08-09) 最新 次の日記(2005-08-13)» 編集

Ussy Diary


2005-08-12

[Java]Eclipseバグ?

久々にJavaをやっていたらこんなものに遭遇しました。 なぜこんなコーディングするの?というツッコミはなしで(笑)

  • JDK1.5.0_03
  • Eclipse3.1
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にすれば当然実行できます。