繁体   English   中英

如何从匿名内部类访问非最终变量?

[英]How am I able to access non-final variable from anonymous inner class?

我有2个Java类。

  1. 测试记录
  2. 测试2

在这两个课程中,我都编写了相同的逻辑。 但是在TestLogging类中,不允许我访问匿名内部类中的非最终变量。

但是在Test2类中,为什么允许我在匿名内部类中访问非最终变量?

测试记录

测试2

如何从匿名内部类访问非最终变量?

差异是由于您要针对其编译的JDK版本(或目标版本)引起的。

Java 8理解“有效的最终”变量。 在使用JDK 8进行编译的地方,不必在匿名类中将变量明确声明为final即可。

换句话说,变量s尽管未声明为final,但并未被重新分配,这使其变为“有效的final”(有关更多信息,请查看此答案 )。

在Java 8(以及您的其他项目TestLogging具有1.5的目标版本)之前,必须将变量显式声明为final

检查Maven配置的Java版本 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM