gpt4 book ai didi

java - 在java中,为什么闭包变量需要声明为final?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:20 24 4
gpt4 key购买 nike

final Object o;

List l = new ArrayList(){{
// closure over o, in lexical scope
this.add(o);
}};

为什么必须将 o 声明为 final?为什么其他具有可变变量的 JVM 语言没有这个要求?

最佳答案

这不是 JVM 的深度,它都发生在语法糖级别。原因是通过闭包导出非 final var 使其容易受到数据争用问题的影响,并且由于 Java 被设计为一种“蓝领”语言,因此在其他方面温和且安全的本地 var 的行为发生了如此惊人的变化被认为太“先进”了。

关于java - 在java中,为什么闭包变量需要声明为final?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10626132/

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