Java 具有内部类的方法中的最终变量
让我们看看下面的代码(让Java 具有内部类的方法中的最终变量,java,variables,inner-classes,final,Java,Variables,Inner Classes,Final,让我们看看下面的代码(让A成为同一个包中的一些简单类): 当行1编译没有问题时,行2生成以下编译错误: 在封闭范围中定义的局部变量必须是final或 有效地 将final赋值给变量i会导致第1行和第2行的编译错误(这是合理的,因为您无法更改最终变量) 第2行编译错误的原因是什么 这也会发生在下一段代码中: public class MyClass { public void outer() { A[] arr = new A[10]; for (int i
A
成为同一个包中的一些简单类):
当行1
编译没有问题时,行2
生成以下编译错误:
在封闭范围中定义的局部变量必须是final或
有效地
将final
赋值给变量i
会导致第1行和第2行的编译错误(这是合理的,因为您无法更改最终变量)
第2行编译错误的原因是什么
这也会发生在下一段代码中:
public class MyClass {
public void outer() {
A[] arr = new A[10];
for (int i=0 ; i<10 ; i++) {
arr[i] = new A() {
private int j = i; // 1
};
}
}
}
我试图弄清楚这个编译选择背后的原因,但我无法理解它们到底是什么。我猜这与该方法可能对变量进行的更改有关,但我不确定我是否完全理解它
public class MyClass {
public void outer() {
A[] arr = new A[10];
for (int i=0 ; i<10 ; i++) {
arr[i] = new A() {
private int j = i; // 1
};
}
}
}
public class MyClass {
public void outer() {
A[] arr = new A[10];
for (int i=0 ; i<10 ; i++) {
final int k = i; // 1
arr[i] = new A() {
private int j = k; // 2
};
}
}
}