编程语言
首页 > 编程语言> > java-从嵌套匿名类中引用匿名对象

java-从嵌套匿名类中引用匿名对象

作者:互联网

是否可以做这样的事情(我使用初始化程序块来简化示例)

new A() {{
  new B() {{
    method(outer.this);
  }}
}}

我在哪里将外部对象的this作为第二个匿名类中的方法调用的参数提供?我不能使用A.this,这会导致编译错误.

注意:给定的代码不会编译,仅应说明我要实现的目标.

编辑:更接近实际用例的示例:

public class Outer {

  public SomeBean createBean() {
    return new SomeBean() {

      private final Object reference = new SomeClass() {

        @Override
        public void notify() {
          Outer.callback(/*what goes here???*/);
        }
      };

      //Methods...
    };
  }

  public static void callback(final SomeBean bean) {
    // do stuff with bean
  }
}

我得到的编译错误只是我没有为回调提供正确的参数,因为我不知道如何引用SomeBean子类…

解决方法:

如果确实需要,我想这应该可行.

new A() {
    {
        new B() {{
            method();
        }};
    }
    private void method() {
        method(this);
    }
}

(历史记录:对于-target 1.3或更早版本,这应该是NPE.)

如果您不需要A内部类的确切类型.

new A() {
    {
        new B() {{
            method(a);
        }};
    }
    private A a() {
        return this;
    }
}

标签:this,anonymous-class,java
来源: https://codeday.me/bug/20191201/2084419.html