声明数组final的元素(不仅仅是数组本身)

One*_*ree 2 java final

我们可以像这样制作一个数组最终:final int[] foo = <whatever>;但是无论如何我可以确保该数组中的每个元素也是最终的吗?

ars*_*jii 5

阵列无法实现.但是,为此您可以使用Collections.unmodifiableList:

返回指定列表的不可修改视图.此方法允许模块为用户提供对内部列表的"只读"访问.对返回列表的查询操作"读取"到指定的列表,并尝试修改返回的列表,无论是直接还是通过其迭代器,都会导致UnsupportedOperationException.

这与Arrays.asList另一个已经指出的答案一起很好地结合起来.所以你的数组foo将写成:

final List<Integer> foo = Collections.unmodifiableList(Arrays.asList(1, 2, 3, ...));
Run Code Online (Sandbox Code Playgroud)

而不是foo[i]你会使用foo.get(i).