web-dev-qa-db-ja.com

Java anonymousクラスから「this」にアクセスする

次のコードを考えます:

_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()メソッドを呼び出します。

私の提案は次のとおりです。

Containerにフィールドを導入します。

_private Container self = this;
_

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

これは合理的な方法ですか?または、より良い方法はありますか?

139
Bob
Container.this.select();
259
Mykola Golubyev

Container.this.select()を記述して、内部クラスと区別できます!

41
PeterMmm