gpt4 book ai didi

java - 即使方法超出范围,内部类如何访问方法中的最终变量?

转载 作者:行者123 更新时间:2023-12-02 02:15:40 25 4
gpt4 key购买 nike

我已经浏览了这个答案的许多链接。而且我知道,从语法上讲,Java 不允许在内部类中访问非最终变量。根据this链接,我还了解到,即使方法完成并且局部变量超出范围,创建局部变量最终也可以使其保持 Activity 状态。

但是,如果一个方法超出了范围,如何将其设为 final方法才能使其在引用它的内部类中保持 Activity 状态?

我指的是下面的代码。

public class Outer {
public static void outerMethod() {
int methodVariable = 40;
class Inner {
public void innerMethod() {
System.out.println(methodVariable); // This line produces compile time error.
}
}
}
}

最佳答案

如果您在调试器中检查 Inner 类的实例,您会发现有一个 methodVariable 字段:

Instance of Inner class in a debugger

并不是说它是唯一可能的实现,但编译器似乎实际上为 methodVariable 创建了一个私有(private)字段,并在那里复制了变量的值。

这可能也是变量必须是最终变量或有效最终变量的原因。如果变量的值发生变化,则无法再与字段的值同步。

关于java - 即使方法超出范围,内部类如何访问方法中的最终变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49339749/

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