从侦听器访问对象

hsz*_*hsz 3 java listener

假设我们有一些Foo包含的类

public void setOnSomethingListener(OnSomethingListener listener);
Run Code Online (Sandbox Code Playgroud)

我们将其注册为:

Foo foo = new Foo();
foo.setOnSomethingListener(new OnSomethingListener(){
  public void onSomething(String data) {
    // ...
  }
});
Run Code Online (Sandbox Code Playgroud)

是否可以从onSomething已注册提到的侦听器的方法父对象访问而无需访问已定义的foo值?

我问它,因为我想将这个监听器分配给一些参数并在少数对象中注册它.

SJu*_*n76 7

是.

你在这里做的是定义一个匿名的内部类.您可以通过执行操作来访问包含类的属性和方法.

MyContainingClass.this.attributeName
Run Code Online (Sandbox Code Playgroud)

  • AKA [Qualified`this`](http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.8.4) (2认同)