我如何能够从匿名内部 class 访问非最终变量?
How am I able to access non-final variable from anonymous inner class?
我有 2 Java classes.
- 测试日志
- 测试2
在两个 classes 中我都写了相同的逻辑。但是在 TestLogging class 中,我不允许访问匿名内部 class.
中的非最终变量
但是在 Test2 class 中,为什么允许我在匿名内部访问非最终变量 class?
如何从匿名内部访问非最终变量class?
不同之处在于您正在编译的 JDK 版本(或目标版本)。
Java 8理解"effectively final"变量。在使用 JDK 8 编译的地方,您不必显式地将变量声明为 final
以便在匿名 class.
中引用它
换句话说,变量 s
虽然没有声明为 final,但没有被重新分配,这使得它成为 "effectively final"(查看 this answer 了解更多信息)。
在 Java 8(以及您的其他项目 - TestLogging
- 的目标版本为 1.5)之前,变量必须明确声明为 final
检查 java 版本的 Maven 配置
我有 2 Java classes.
- 测试日志
- 测试2
在两个 classes 中我都写了相同的逻辑。但是在 TestLogging class 中,我不允许访问匿名内部 class.
中的非最终变量但是在 Test2 class 中,为什么允许我在匿名内部访问非最终变量 class?
如何从匿名内部访问非最终变量class?
不同之处在于您正在编译的 JDK 版本(或目标版本)。
Java 8理解"effectively final"变量。在使用 JDK 8 编译的地方,您不必显式地将变量声明为 final
以便在匿名 class.
换句话说,变量 s
虽然没有声明为 final,但没有被重新分配,这使得它成为 "effectively final"(查看 this answer 了解更多信息)。
在 Java 8(以及您的其他项目 - TestLogging
- 的目标版本为 1.5)之前,变量必须明确声明为 final
检查 java 版本的 Maven 配置