Java匿名クラスから「this」にアクセス


143

次のコードがあるとします:

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()

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

回答:


268
Container.this.select();

3
thisメソッドや属性のようにキーワードを区別できることを知りませんでした。+1
logo_writer 2016

ContainerここでExactly クラスを指定する必要があることに注意してください。その祖先は受け入れられません。
velis

42

Container.this.select()内部クラスと区別して書くことができます!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.