当前位置: 首页 > 面试题库 >

“从内部类内部访问变量需要声明为最终的”错误

李和昶
2023-03-14
问题内容

尝试在内部类内部使用一个类的本地成员时遇到此错误。我知道将其声明为final将解决此问题,但我读到Java
8应该自动处理它,因为我将Intellij与Java 8一起使用,但它仍然无法编译。还有其他方法可以在不将其声明为final的情况下进行修复吗?谢谢。


问题答案:

我知道将其声明为final将解决此问题,但我读到Java 8应该自动处理它。

如果变量 有效地为final ,则Java 8将对其进行处理。

我可以想到两种可能的解释:

  1. 也许变量不是 有效的最终值 。尝试显式声明为final。如果您收到编译错误(例如说正在尝试修改final),则该变量实际上不是最终变量。

  2. 也许您尚未针对Java 8正确配置Intellij和项目;例如

    • 设置源电平;参见@saman的答案
    • 检查您是否选择了正确的JDK:Java 8无法在Intellij15上编译


 类似资料:
  • 我知道这个话题听起来像是重复的,但我并不是想在这里调试这个问题,而是想绕过它。 我的程序应该做的是:对于文件夹中的每个文件,创建一个新按钮。如果您单击此按钮,请输入您刚输入的文件夹的名称。 现在我遇到的问题是,“fileName”变量需要放在final中,因为Java提供的是对象的指针,而不是值本身。但如果我这样做,则只会为任何按钮发送最后选择的文件名。

  • 我正在尝试让一个按钮将其值与其他变量进行比较。在onClick方法中,我收到一个错误,说变量在内部类中被访问,需要声明为最终变量。问题是变量应该被更改,所以我无法使其成为最终变量。我如何解决这个问题?这是我的代码:

  • 我的代码有上述错误。我尝试通过将我的btnsav声明为最终版本来修复此问题,但随后我收到另外两个错误: 未知类:“btnsave” 不是一个声明 你知道我如何修复这个错误吗?

  • 变量“适配器”和声明最终的问题。我的IDE一直在告诉“适配器”需要声明为最终,我在哪里以及如何做到这一点?这让我陷入停顿,我似乎无法继续前进。请帮助。它在这里参考了这段代码和问题:来自ListView的Android ImageView

  • 在这里,当我编译这段代码时,我得到了一个错误,即从内部类访问局部变量a;需要宣布为最终。但这里“int a”是一个局部变量,所以为什么我们需要声明为final以便在内部类中访问。

  • 我得到了一个问题,对内部类的局部变量访问需要声明为final。从方法createGrids()->“”中,i是一个需要声明为final的局部变量。我不知道为什么,我在字段中添加了final,但它并不起作用。 //略