gpt4 book ai didi

java - 使数组的内容在 Java 中不可修改

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:27:06 26 4
gpt4 key购买 nike

我在看《Effective Java》,它说我们可以使用下面的代码使数组的内容不可修改:

private static final Thing[] PRIVATE_VALUES = { ... };
public static final Thing[] values() {
return PRIVATE_VALUES.clone();
}

但是,我们知道两个数组(原始数组和复制数组)对每个元素都有相同的引用。那么上面的方法如何避免数组的内容被修改。我真的很怀疑。有人能帮忙吗我。非常感谢。

最佳答案

没有办法让数组的元素不可修改。这就是为什么有些人将不安全的方法传递给数组的 clone() 或将元素作为不可修改的 List 传递。

Object[] original = new Object[]{ ... some objects ... }

Object[] clone = original.clone()

originalclone 现在是两个不同的容器,其中包含相同的对象(内容)。

即使 clone 元素发生变化,original 中的元素(每个数组索引中的内容)也不会发生变化。但是,数组中引用的对象(每个数组元素中的内容)仍然可以更改其状态。

现在,如果你的数组都是基元:

int[] original = {1,2,3,4,5}

int[] clone = original.clone()

那么original中的元素是不可修改的,也是不可变的。

关于java - 使数组的内容在 Java 中不可修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19719960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com