java - Java从内部类访问本地数组
问题描述
我知道如果变量不是最终的,你不能从内部类编辑局部变量。但是为什么我可以从内部类更改数组,即使它不是最终的?
public void test(String s) {
int a[] = {1};
IntStream.range(0, s.length() / 2).forEach(i -> a[0] = 2);
}
如果a是一个数组,如果我编辑它,编译器不会抱怨。但是如果a是一个整数,我不能在内部类中对其进行更改。
解决方案
这在 Java 中是一个有用的技巧,因为您正在使用的数组(它是一个对象)永远不会重新分配。您可以对对象的属性执行相同的操作。如果您更改了对象的属性,您仍然不会重新分配对象并且它将保持“有效最终”。参考: Effectively final - 内部类访问
附注:最好以“int [] a”的形式编写数组,因为它们更具可读性。
推荐阅读
- android - 在应用程序中,我们是否有办法自定义共享意图对象,以便我们在电子邮件选择器中而不是在短信选择器中添加额外的文本?
- c# - 检查列表是否为空时哪个更好:不为空或使用任何
- python - 如何使用 OpenCV、人脸识别、Flask、Python 3 和 Heroku 在客户端打开相机
- php - 插入查询时间 PHP
- javascript - 带有 sigma.js 和 bolt 的 Neo4j Javascript 应用程序
- azure-devops - 添加文件以构建包工件
- ios - TestFlight 的公共链接的兑换码在哪里?
- bash - Fiddler 不显示来自 git bash 客户端的 HTTPS 流量
- django - Django - 导入 .txt 文件以填充数据
- node.js - 网络在长时间循环中冻结