我正在开发一个用于保存和调用屏幕状态的系统,这是我第一次搞乱这种东西,所以我不太确定最好的方法是什么,但我目前存储了所有的“PreviewMonitor”数组列表内的对象(大约 40 个左右)。问题是,当我创建一个名为“allPreviewMonitors”的 ArrayList 副本进行存储时,我最终会得到一个 ArrayList,其中的元素随着原始元素的更新而不断变化。这几乎就像我正在使用原始的 ArrayList 一样,但事实上,当我创建 allPreviewMonitors 的副本时,它应该是一个完全不同的 ArrayList,具有元素及其状态的“冻结”版本。为什么会发生这种行为?如果需要,我可以显示代码,但我不确定这里是否需要它。
An Arraylist
像所有人一样Collections
,仅包含对对象的引用。
复制 List 是不够的,您还必须在创建 List 副本时对列表中的元素进行克隆(或创建新元素,或使用复制构造函数)。
这称为制作“深复制”,而您当前拥有“浅复制”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)