考虑这种情况:
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实现中定义一个最终的局部变量并引用它,但我只是想知道是否实际上有直接语言支持来引用该实例。
答案 0 :(得分:5)
SomeInterface.this
无法编译的原因是封闭类不是SomeInterface
,而是一些匿名类型。
您不能使用匿名类型的合格this
。这就是为什么他们匿名;您不能通过名称引用它们,并且限定this
通过明确命名封闭类型来工作。
尝试类似的东西很有吸引力:
SomeClass$1.this
但是你得到一个错误SomeClass$1 cannot be resolved to a type
;尽管如果你让这段代码在没有这一行的情况下编译,它(很可能)会创建一个SomeClass$1.class
。
您可以使用非匿名类并使用限定的this
,也可以使用您提到的final
局部变量技术。