为了账号安全,请及时绑定邮箱和手机立即绑定

Java中的不可变数组

Java中的不可变数组

叮当猫咪 2019-08-17 15:59:59
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));


查看完整回答
反对 回复 2019-08-17
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

正如其他人所说,你不能在Java中拥有不可变数组。

如果您绝对需要一个返回不影响原始数组的数组的方法,那么每次都需要克隆该数组:

public int[] getFooArray() {
  return fooArray == null ? null : fooArray.clone();}

显然这是相当昂贵的(因为你每次调用getter时都会创建一个完整的副本),但是如果你不能改变界面(List例如使用一个)并且不能让客户改变你的内部风险,那么它可能是必要的。

这种技术被称为制作防御性副本。


查看完整回答
反对 回复 2019-08-17
  • 3 回答
  • 0 关注
  • 2083 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信