Eclipse compilerのバグ

1120 ワード


以下のプログラムはjavacでコンパイルして実行した後に問題がなくて、正しく0 1を出力して、eclipseの中で間違いを報告した後に直接掛けました
public class Construct {

    public static void main(String[] args) {
        Construct$1 c1 = new Construct$1();
        System.out.println(c1.value());

        C c = new C() {

            @Override
            public int value() {
                return 0;
            }
        };

        System.out.println(c.value());
    }
}

abstract class C {
    public abstract int value();
}

class Construct$1 {
    public int value() {
        return 1;
    }
}

 
実際にコンパイル結果を比較すると,プログラムにConstruct$1が既に存在する場合,javacはその匿名内部クラスのコンパイル名がConstruct$2であるべきであることを知っている.eclipseのbuild-in compilerはこの検査をしていないようなので、eclipseのbinパスにはConstruct$1の出力しかなく、走ると自然なカップがあります.
 

テスト環境mac java 1.7.0_45,eclipseバージョンVersion:Juno Service Release 2 Build id:20130225-0426