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

时间:2014-06-03 14:58:51

标签: java final

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

2 个答案:

答案 0 :(得分:5)

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

  

返回指定列表的不可修改视图。该方法允许模块为用户提供&#34;只读&#34;访问内部列表。对返回列表的查询操作&#34;通读&#34;到指定的列表,并尝试修改返回的列表,无论是直接还是通过其迭代器,都会产生UnsupportedOperationException

这与Arrays.asList一起使用效果很好,正如另一个答案已经表明的那样。因此,您的数组foo将被写为:

final List<Integer> foo = Collections.unmodifiableList(Arrays.asList(1, 2, 3, ...));

而不是foo[i]您将使用foo.get(i)

答案 1 :(得分:1)

您不能这样做,但您可以使用不可修改的列表:

List<String> items = Collections.unmodifiableList(Arrays.asList("I", "can", "never", "change"));