在java中,实现深层对象复制功能有点困难.您采取了哪些步骤来确保原始对象和克隆的对象没有共享?
如何克隆ArrayList并在Java中克隆其项目?
例如,我有:
ArrayList<Dog> dogs = getDogs();
ArrayList<Dog> clonedList = ....something to do with dogs....
Run Code Online (Sandbox Code Playgroud)
我希望那些物品clonedList与狗列表中的物品不同.
我需要从java HashMap中获取一个集合,而不会在以后的集合中反映地图中的更改.我想使用Collection.toArray()来实现这一点,但它不起作用.结果Object []也在改变(javadocs说返回的数组是"安全的",因为这个集合没有维护对它的引用).有任何简单的方法来实现这一目
是否有java实用程序clone()为HashMap这样做的方法,它不仅复制地图元素的地图对象(如clone()在HashMap类中)?
我有C++
memcpy (&wkpm, (PMSK *)pr_masks + (long)(x - 1), sizeof(PMSK));
Run Code Online (Sandbox Code Playgroud)
哪里PMSK是结构.它将是Java中的一个类.
现在假设我在这里将整个内存块复制到pr_masks中,即创建PMSK该类的其他实例.如何在Java中执行此操作.
示例:在第20行的java代码中,我希望捕获类实例,然后再次使用第100行中的相同实例.在两者之间可能有许多修改.
希望我对我的问题很清楚.
谢谢
就"最佳实践"而言,哪种方法适用于创建对象的"深层复制"?
我想将propertyMap的副本添加到我的propertyMap:
public void addProperties(Map<String, Object> propertyMap) {
for (Map.Entry<String, Object> propertyEntry : propertyMap.entrySet()) {
this.propertyMap.put(propertyEntry.getKey(), propertyEntry.getValue());
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码没有这样做,但希望传达意图?
最好的方法是什么?我已经完成了一些关于"克隆","防御性复制","不可变对象",Collections.unmodifiable ......之类的阅读,但我比之前更加困惑.
我所需要的只是典型的SO风格,是一种更好的方式来表达我在代码片段中的意思.
java ×8
collections ×3
deep-copy ×3
clone ×2
c++ ×1
class ×1
cloneable ×1
hashmap ×1
immutability ×1