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

时间:2010-05-28 15:35:47

标签: java syntax anonymous-inner-class

考虑这种情况:

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

是否有语法引用注释代码中SomeInterface表示的匿名内部类的实例?对于SomeClass,您可以SomeClass.this是否有相应的实现SomeInterface?

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

1 个答案:

答案 0 :(得分:5)

SomeInterface.this无法编译的原因是封闭类不是SomeInterface,而是一些匿名类型。

您不能使用匿名类型的合格this。这就是为什么他们匿名;您不能通过名称引用它们,并且限定this通过明确命名封闭类型来工作。

尝试类似的东西很有吸引力:

SomeClass$1.this

但是你得到一个错误SomeClass$1 cannot be resolved to a type;尽管如果你让这段代码在没有这一行的情况下编译,它(很可能)会创建一个SomeClass$1.class

您可以使用非匿名类并使用限定的this,也可以使用您提到的final局部变量技术。

参考