Java中的不可变数组Java中的原始数组是否有一个不可变的替代方法?制作一个原始数组final实际上并不能阻止人们做类似的事情final int[] array = new int[] {0, 1, 2, 3};array[0] = 42;我希望数组的元素不可更改。
3 回答
慕后森
TA贡献1802条经验 获得超5个赞
不是原始数组。您需要使用List或其他一些数据结构:
List<Integer> items = Collections.unmodifiableList(Arrays.asList(0,1,2,3));
慕工程0101907
TA贡献1887条经验 获得超5个赞
正如其他人所说,你不能在Java中拥有不可变数组。
如果您绝对需要一个返回不影响原始数组的数组的方法,那么每次都需要克隆该数组:
public int[] getFooArray() { return fooArray == null ? null : fooArray.clone();}
显然这是相当昂贵的(因为你每次调用getter时都会创建一个完整的副本),但是如果你不能改变界面(List
例如使用一个)并且不能让客户改变你的内部风险,那么它可能是必要的。
这种技术被称为制作防御性副本。
添加回答
举报
0/150
提交
取消