0

有什么理由可以声明一个数组 final 吗?说这样的话

final int[] array={1,2,33,21,11};
4

4 回答 4

9

可能有几个。至少,它确保了

  • 后面的代码不能将变量“数组”指向另一个数组
  • 匿名内部类(例如侦听器)可以看到变量“数组”。

重要的是,它不能确保 'array' 的内容是不可变的。

于 2011-07-03T22:33:55.343 回答
1

它提供了一个不变量,即“数组”的分配不能改变。(在查看代码时,我可以假设“数组”不会被重新分配)。然而,没有什么能阻止元素被改变。前任。array[2] 可以从 33 更改为 25。

于 2011-07-03T22:34:34.640 回答
0

原因与任何其他可变类型相同:引用在声明对象的整个生命周期中保持不变,因此您可以自由分发它。final总是关于参考被固定而不是内容,这可能会改变。

使用数组,您甚至可以保证数组大小不会改变,尽管该保证的有用程度取决于具体的用例。

于 2011-07-03T22:36:54.893 回答
0

你不能。您只能将数组引用声明为final,这与使数组不可变无关。数组在 Java 中永远不会不可变。

于 2011-07-03T23:03:31.070 回答