Eclipse compilerのバグ
以下のプログラムは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