gpt4 book ai didi

java - 如何深拷贝Object类型的对象?

转载 作者:行者123 更新时间:2023-12-01 10:30:26 25 4
gpt4 key购买 nike

通常,当我深度复制对象时,我使用复制构造函数。对于我们的作业,我们应该创建一个对象列表,尽管讲师指出使用这样的列表是不明智的。无论如何,当我向数组添加新对象时遇到了问题。我试图在将对象添加到数组之前创建对象的深拷贝以防止隐私泄漏,但对象类没有复制构造函数。例如,以下内容不起作用:

Object temp = new Object(insertObjectArgument);

然后我研究了 Object.clone(),但看起来我应该尽可能远离它。有什么方法可以深度复制 Object 类型的对象吗?

最佳答案

对于复杂的对象并且当性能不重要时,我使用 json 库,例如 gson将对象序列化为 json 文本,然后反序列化文本以获取新对象。

基于反射的gson在大多数情况下都可以工作,除了transient字段不会被复制以及带有循环引用的对象会导致StackOverflow异常

public static <ObjectType> ObjectType Copy(ObjectType AnObject, Class<ObjectType> ClassInfo)
{
Gson gson = new GsonBuilder().create();
String text = gson.toJson(AnObject);
ObjectType newObject = gson.fromJson(text, ClassInfo);
return newObject;
}
public static void main(String[] args)
{
MyObject anObject ...
MyObject copyObject = Copy(o, MyObject.class);

}

关于java - 如何深拷贝Object类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35120424/

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