您将如何使用Java深度复制对象?

对象的深层副本将复制它在我们要复制的对象中遇到的每个对象。副本和原始对象不会共享任何内容,因此它将是原始副本。

最简单的方法是将对象转换为JSON字符串,然后将其转换回JS对象。但是,这种方式不允许方法复制。

示例

let obj = {
   foo: 1,
   bar: { baz: 'test' }
}
let newObj = JSON.parse(JSON.stringify(obj));
obj.bar.baz = 20;
console.log(obj);
console.log(newObj);

输出结果

{ foo: 1, bar: { baz: 20 } }  
{ foo: 1, bar: { baz: 'test' } } 

这里的newObj不会随着对原始obj的更新而更改,因此深层复制成功。