Java unmodifiable array

2022-09-03 03:56:40
final Integer[] arr={1,2,3};
arr[0]=3;
System.out.println(Arrays.toString(arr));

我尝试了上面的代码,看看最终数组的变量是否可以重新分配[ans:it can be]。我理解,通过最终的 Integer[] 数组,这意味着除了我们最初分配的实例之外,我们不能分配另一个 Integer[] 实例。我想知道是否有可能使数组变量也不可修改。


答案 1

据我所知,这是不可能的。

然而,有一个方法 Collections.unmodifiableList(..) 可以创建一个不可修改的视图,例如 .List<Integer>

如果您想保证即使是不可修改视图列表的创建者也无法修改基础(可修改)列表,请查看Guava的ImmutableList


答案 2

不。数组的内容可以更改。你无法阻止这一点。

集合具有用于创建不可修改集合的各种方法,但未提供数组。