public class Runner {
public static void main(String[] args) {
String message = "Hello world";
new Runnable() {
@Override
public void run() {
System.out.println(message);
}
}.run();
}
}
Java8隐式地使message
成为最终的,因为它永远不会被修改。尝试在代码中的任何地方修改它,您将得到一个编译错误(因为这删除了隐式的final
)。
这被称为有效的最终。引用文件:
然而,从Java SE8开始,一个本地类可以访问封闭块的局部变量和参数,这些变量和参数是final或实际上是final。一个变量或参数,其值在初始化后从未更改,实际上是final的。
问题内容: Java 7在以下代码上说:“无法引用封闭范围中定义的非最终局部变量消息”: Java 8没有。 怀疑这是关于向Java添加功能编程功能。 它是否类似地处理代码? 问题答案: Java8隐式将其定为final,因为它从未被修改。尝试在代码中的任何地方修改它,您将得到一个编译错误(因为这会删除隐式的)。 这实际上称为 final 。引用文档: 但是,从Java SE 8开始,本地类可以访
我还是Java新手,我试图创建一个内部类并在main中调用该方法。有一个编译错误说 非静态变量 - 这不能从静态上下文中引用 请帮忙
问题内容: 我对Java还是陌生的,我尝试创建一个内部类并在main内部调用该方法。但是出现编译错误,提示“非静态变量-不能从静态上下文中引用” 请帮忙 问题答案: 一个 内部 类需要的的一个实例的引用 外 类以构造。如果您的类在逻辑上不需要它,请使用修饰符将其设置为“仅嵌套类”: 编辑:要创建一个作为 内部 类的实例,您可以使用类似以下内容的方法: 或更简短地说: …但是除非您真的 想要 引用封
在此代码示例中,ActionListener的actionPerformed函数中没有使用最终对象jLabel:
问题内容: 我正在尝试将java8 forEach循环内的布尔变量更改为true,这是非最终的。但是我遇到了以下错误:在封闭范围内定义的必需局部变量必须是final或有效的final。 如何解决这个错误? 代码: 这是我在函数中创建的变量。 现在,当我尝试更改它时: 我收到错误消息:封闭范围中定义的必需局部变量必须是final或有效的final。 为什么会出现此错误,以及如何解决? 问题答案: 您
问题内容: 尝试在内部类内部使用一个类的本地成员时遇到此错误。我知道将其声明为final将解决此问题,但我读到Java 8应该自动处理它,因为我将Intellij与Java 8一起使用,但它仍然无法编译。还有其他方法可以在不将其声明为final的情况下进行修复吗?谢谢。 问题答案: 我知道将其声明为final将解决此问题,但我读到Java 8应该自动处理它。 如果变量 有效地为final ,则Ja