146

次のコードが与えられます:

public interface Selectable {
  public void select();
}

public class Container implements Selectable {
  public void select() {
  ...
  }
  public void createAnonymousClass() {
    Selectable s = new Selectable() {
      public void select() {
        //see comment below.
      }
    };
  }
}

Container.select()匿名クラスのselect()メソッド内からアクセスしたい。ただし、this.select()再び匿名クラスのselect()メソッドを呼び出します。

私の提案は次のようになります:

コンテナにフィールドを導入します。例:

private Container self = this;

これで、匿名クラス内からContainer.select()呼び出すことでアクセスできます。self.select()

これは合理的な方法ですか?それとももっと良い方法はありますか?

4

2 に答える 2

280
Container.this.select();
于 2009-07-05T14:07:47.953 に答える
43

Container.this.select()内部クラスとは異なるように書くことができます!

于 2009-07-05T14:08:30.667 に答える