我有 2 个 Java 类。
- 测试记录
- 测试2
在两个类中我都编写了相同的逻辑。但是在 TestLogging 类中,我不允许访问匿名内部类中的非最终变量。
但是在 Test2 类中,为什么允许我访问匿名内部类中的非最终变量?
如何从匿名内部类访问非最终变量?
最佳答案
差异是由于您正在编译的 JDK 版本(或目标版本)造成的。
Java 8 理解“有效的最终”变量。如果使用 JDK 8 进行编译,则不必将变量显式声明为 final
即可在匿名类中引用它。
换句话说,变量s
虽然没有声明为final,但没有被重新分配,这使得它“实际上是final”(查看this answer以获取更多信息)。
在 Java 8 之前(以及您的其他项目 - TestLogging
- 目标版本为 1.5),变量必须显式声明为 Final
关于java - 如何从匿名内部类访问非最终变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52752646/