在 Java 标准库(JDK)中,并不存在“不可变数组(immutable array)”这种原生类型或内置类。
下面分层说明:
int[] a = {1, 2, 3};
a[0] = 10; // 合法,数组内容可改
int[]、String[] 等数组对象本身是可变的✅ 结论:
Java 原生数组 ≠ 不可变
List.of(...)(推荐,Java 9+)List<Integer> list = List.of(1, 2, 3);
// list.set(0, 10); // 抛 UnsupportedOperationException
Collections.unmodifiableListList<Integer> list = Collections.unmodifiableList(
new ArrayList<>(Arrays.asList(1, 2, 3))
);
Arrays.copyOf + 只读封装int[] source = {1, 2, 3};
int[] copy = Arrays.copyOf(source, source.length);
ImmutableList.of(1, 2, 3);
这些提供真正的不可变集合(不是数组)
Java 没有“不可变数组”这个东西,但可以用不可变集合(List / ImmutableList)来代替。
如果你愿意,我可以:
List.of vs Arrays.asList你想看哪一个?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。