Eclipseのバグだと最初に思った動作に遭遇しました。この単純なクラスを考えてみましょう。
public class Foo {
public static interface Callback {
public void onAction();
}
}
これは完全に有効です。ただし、これはそうではありません。
public class Foo implements Callback {
public static interface Callback {
public void onAction();
}
public void onAction() { /*some implementation*/ }
}
しかし、これも有効です。
public class Foo {
public static interface Callback {
public void onAction();
}
private final Callback mCallback = new Callback() {
public void onAction() { /*some implementation*/ }
};
}
これ自体を実装させることで単純に保存できるのに、Javaがメンバーを「無駄にする」ように強制するのはなぜですか?私はこのインターフェースを独自のファイルに入れる「回避策」をよく知っていますが、好奇心から:これが機能しない理由はありますか?