Mat*_*ndi 2 java clone copy arraylist duplicates
我正在开发一个用于保存和调用屏幕状态的系统,这是我第一次弄乱这种东西,所以我不确定最好的方法是什么,但我目前存储所有“PreviewMonitor”数组列表中的对象(大约 40 个左右)。问题是,当我创建一个名为“allPreviewMonitors”的 ArrayList 副本进行存储时,我最终得到了一个 ArrayList,其中的元素随着原始元素的更新而不断变化。这几乎就像我在使用原始 ArrayList 一样,而实际上,它应该是一个完全不同的 ArrayList,其中包含我创建 allPreviewMonitors 副本时元素及其状态的“冻结”版本。为什么会发生这种行为?如果需要,我可以显示代码,但我不确定这里是否需要它。
一个Arraylist像所有Collections包含的对象只引用。仅复制 List 是不够的,您还必须在创建 List 副本时 clone() 列表中的元素(或创建新元素,或使用复制构造函数)。
这称为制作“深拷贝”,而您目前拥有“浅拷贝”。
| 归档时间: |
|
| 查看次数: |
5222 次 |
| 最近记录: |