Java中的不可变数组

Java中的不可变数组

Java中的原始数组是否有一个不可变的替代方法?制作一个原始数组final实际上并不能阻止人们做类似的事情

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

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


叮当猫咪
浏览 2084回答 3
3回答

慕后森

不是原始数组。您需要使用List或其他一些数据结构:List<Integer>&nbsp;items&nbsp;=&nbsp;Collections.unmodifiableList(Arrays.asList(0,1,2,3));

慕工程0101907

正如其他人所说,你不能在Java中拥有不可变数组。如果您绝对需要一个返回不影响原始数组的数组的方法,那么每次都需要克隆该数组:public&nbsp;int[]&nbsp;getFooArray()&nbsp;{ &nbsp;&nbsp;return&nbsp;fooArray&nbsp;==&nbsp;null&nbsp;?&nbsp;null&nbsp;:&nbsp;fooArray.clone();}显然这是相当昂贵的(因为你每次调用getter时都会创建一个完整的副本),但是如果你不能改变界面(List例如使用一个)并且不能让客户改变你的内部风险,那么它可能是必要的。这种技术被称为制作防御性副本。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java