【问题标题】:How am I able to access non-final variable from anonymous inner class?我如何能够从匿名内部类访问非最终变量?
【发布时间】:2019-03-16 02:21:42
【问题描述】:

我有 2 个 Java 类。

  1. 测试记录
  2. 测试2

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

但是在Test2类中,为什么我可以访问匿名内部类中的非final变量?

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

【问题讨论】:

标签: java oop final anonymous-inner-class


【解决方案1】:

差异是由于您正在编译的 JDK 版本(或目标版本)造成的。

Java 8 理解“有效最终” 变量。在使用 JDK 8 编译的地方,您不必显式将变量声明为 final 以便在匿名类中引用它。

换句话说,变量s,虽然没有声明为final,但没有被重新分配,这使得它“实际上是final”(查看this answer了解更多信息)。

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

【讨论】:

    【解决方案2】:

    检查java版本的maven配置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多