5

考虑这种情况:

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 实现中定义一个最终的局部变量并引用它,但我只是想知道实际上是否有直接的语言支持来引用该实例。

4

1 回答 1

5

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

您不能this对匿名类型使用合格的。这就是他们匿名的原因;您不能通过名称来引用它们,并且this通过显式命名封闭类型来限定作品。

尝试以下方法很诱人:

SomeClass$1.this

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

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

参考

于 2010-05-28T16:12:44.083 回答