gpt4 book ai didi

java - 为什么java允许在匿名内部类中重新分配类级变量,而局部变量则不允许

转载 作者:行者123 更新时间:2023-11-29 08:25:23 25 4
gpt4 key购买 nike

这个问题类似于Lambdas: local variables need final, instance variables don't , 但唯一的区别是这个问题即使没有 lambda 表达式也是有效的,即即使在 Java7 上也是有效的。

这是下面的代码片段。

public class MyClass {

Integer globalInteger = new Integer(1);

public void someMethod() {

Integer localInt = new Integer(2);

Runnable runnable = new Runnable() {

@Override
public void run() {

globalInteger = new Integer(11);//no error
localInt = new Integer(22);//error here

}
};
}
}

我可以为 globalInteger 重新分配一个新值,但不能为 localInteger。为什么会有这种差异?

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