gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 20:07:16 26 4
gpt4 key购买 nike

考虑这种情况:

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

最佳答案

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

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

尝试这样的事情很诱人:

SomeClass$1.this

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

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

引用资料

关于java - 是否有语法可以从另一个匿名内部类获取对匿名内部类的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2930327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com