Java 从内部访问本地数组 class
Java accessing local array from inner class
我知道如果变量不是最终变量,则无法从内部 class 编辑局部变量。但是,为什么我可以从内部 class 更改数组,即使它不是最终的?
public void test(String s) {
int a[] = {1};
IntStream.range(0, s.length() / 2).forEach(i -> a[0] = 2);
}
如果 a 是一个数组,编译器不会在我编辑它时报错。但是如果 a 是一个整数,我不能在内部 class.
中对其进行更改
这是 Java 中的一个有用技巧,因为您正在使用的数组(它是一个对象)永远不会重新分配。您可以对对象的属性执行相同的操作。
如果你改变了一个对象的属性,你仍然不会重新分配一个对象并且它会保持“有效最终”。
参考:
旁注:最好以“int[] a”形式编写数组,因为它们更具可读性。
我知道如果变量不是最终变量,则无法从内部 class 编辑局部变量。但是,为什么我可以从内部 class 更改数组,即使它不是最终的?
public void test(String s) {
int a[] = {1};
IntStream.range(0, s.length() / 2).forEach(i -> a[0] = 2);
}
如果 a 是一个数组,编译器不会在我编辑它时报错。但是如果 a 是一个整数,我不能在内部 class.
中对其进行更改这是 Java 中的一个有用技巧,因为您正在使用的数组(它是一个对象)永远不会重新分配。您可以对对象的属性执行相同的操作。
如果你改变了一个对象的属性,你仍然不会重新分配一个对象并且它会保持“有效最终”。
参考:
旁注:最好以“int[] a”形式编写数组,因为它们更具可读性。