gpt4 book ai didi

Java 停止了内部类中非最终变量的错误 (java 8)

转载 作者:IT老高 更新时间:2023-10-28 20:21:24 25 4
gpt4 key购买 nike

Java 7 在以下代码中说“不能引用在封闭范围内定义的非最终局部变量消息”:

public class Runner {   
public static void main(String[] args) {

String message = "Hello world";

new Runnable() {
@Override
public void run() {
System.out.println(message);
}
}.run();
}
}

Java 8 没有。

怀疑这是为了给 Java 添加函数式编程特性。

它是否类似地处理代码?

最佳答案

Java 8 隐含地使 message 最终确定,因为它从不被修改。尝试在代码中的任何地方修改它,你会得到一个编译错误(因为这会删除隐含的 final)。

这被称为实际上是最终的。报价 From the docs :

However, starting in Java SE 8, a local class can access local variables and parameters of the enclosing block that are final or effectively final. A variable or parameter whose value is never changed after it is initialized is effectively final.

关于Java 停止了内部类中非最终变量的错误 (java 8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28408109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com