代码之家  ›  专栏  ›  技术社区  ›  Yishai

是否有语法从另一个匿名内部类获取对匿名内部类的引用?

  •  5
  • Yishai  · 技术社区  · 14 年前

    考虑这种情况:

    public class SomeClass {
        public void someMethod() {
            new SomeInterface() {
                  public void someOtherMethod() {
                      new SomeOtherInterface() {
                           new someThirdMethod() {
                                //My question is about code located here.
                           }
                      };
                  }
            };
        }
    }
    

    SomeClass.this 是否有一个等价的接口来实现SomeInterface?

    如果没有,当然可以在SomeInterface实现中定义一个最终的局部变量并引用它,但是我想知道是否有直接的语言支持来引用这个实例。

    1 回复  |  直到 14 年前
        1
  •  5
  •   polygenelubricants    14 年前

    为什么 SomeInterface.this 不编译是因为封闭类不是 SomeInterface

    你不能用合格的 this 匿名类型。这就是为什么他们 ; 你不能指名道姓,而且 通过显式命名封闭类型来工作。

    SomeClass$1.this
    

    但是你会出错 SomeClass$1 cannot be resolved to a type SomeClass$1.class .

    您可以使用非匿名类和限定类 ,或者您可以使用 final 你提到的局部变量技术。

    工具书类