Boolean[] array = new Boolean[5];
for(Boolean value : array) {
value = false;
}
java增强型for循环使用迭代器来遍历数组。迭代器返回对该对象的引用,但是java会通过值传递引用,因此您无法更改引用指向的内容,您正在尝试使用value = false。
编辑:事实证明,对于正常的数组,而不是转换为List并使用迭代器,java会执行以下操作:
for (int i = 0; i < array.length; i++)
{
Boolean value = array[i]; //here's how we get the value that's referred to
... //in the enchanced for loop
}
虽然我们不使用迭代器,但Java通过值引用的事实仍然解释了这里发生了什么。
编辑结束
如果这是一些具有某些实例成员的对象数组,则可以更改所述成员,但不能改变对象本身的引用。
正如其他人所建议的,为了解决这个问题,可以简单地使用一个常规的循环,并手动将值分配给数组中的索引槽,即:
Boolean[] b_values = new Boolean[5];
for(int i = 0; i < b_values.length; i++)
{
b_values[i] = Boolean.FALSE;
}