Java 中的不可变数组

2022-08-31 06:54:02

在Java中,有没有一种不可变的替代方案来代替原始数组?创建一个基元数组实际上并不能阻止一个人做这样的事情final

final int[] array = new int[] {0, 1, 2, 3};
array[0] = 42;

我希望数组的元素是不可更改的。


答案 1

不适用于基元数组。您需要使用 List 或其他一些数据结构:

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

答案 2

我的建议是不要使用数组或数组,而是使用GuavaImmutableList,它就是为此目的而存在的。unmodifiableList

ImmutableList<Integer> values = ImmutableList.of(0, 1, 2, 3);