【发布时间】:2023-12-27 23:18:01
【问题描述】:
我将向您展示两个代码束。
public class A {
int globalVariable;
public void foo() {
globalVariable++;
class B {
void foo() {
System.out.println(globalVariable);
}
}
B b = new B();
b.foo();
}
public static void main(String[] args) {
A a = new A();
a.foo();
}
}
在这里我声明了一个全局变量,更改了它的值,声明了一个内部类并创建了这个类的实例。这段代码可以正常工作并打印
1
现在看看这段代码:
public class A {
public void foo() {
int localVariable;
localVariable++;
class B {
void foo() {
System.out.println(localVariable);
}
}
B b = new B();
b.foo();
}
public static void main(String[] args) {
A a = new A();
a.foo();
}
}
我在第一个代码上完成了所有步骤,除了这里的变量不是全局的而是本地的。这里我得到一个异常,说 localVariable 必须是最终的或有效的最终的。我用谷歌搜索并理解这就是为什么值被捕获并传递给类的原因。当我们更改它时,类不知道此更改,这会引起混乱。 我有两个问题:
1.如果它引起了一些混乱,我们不必在声明后更改它 为什么我们没有在全局变量上得到这个异常
2.它是关于局部变量值的改变,所以我们只有在类实例声明后改变这个值时才会得到这个异常。不是吗?
【问题讨论】:
-
投票重新开放,因为我认为重复项不能回答他的第二个问题。
-
他不应该有组合问题,而是每个帖子一个问题
标签: java