1. ホーム
  2. java

[解決済み] Java の匿名クラスから this にアクセスする

2022-05-06 01:55:10

質問

次のようなコードがあるとする。

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() を無名クラス内から呼び出すことができます。

これは合理的な方法なのでしょうか?それとももっと良い方法があるのでしょうか?

解決方法は?

Container.this.select();