如何在Java中更快地创建/复制对象?

如何在Java中更快地创建/复制对象?,java,object,Java,Object,我想在java中复制一个对象而不复制引用 Object o1 = new Object(); Object o2 = o1; 但o2不应复制o1的参考值。因此,o2中的任何变化不得影响o1 在java中如何实现这一点?您可以使用方法克隆对象: Object o2 = o1.clone(); 您可以使用方法克隆对象: Object o2 = o1.clone(); 您可以重写clone方法,该方法将创建整个对象图深度副本的副本并创建新对象 注意:每个类都将从类继承默认克隆实现。但必须重写该方

我想在java中复制一个对象而不复制引用

Object o1 = new Object();
Object o2 = o1;
但o2不应复制o1的参考值。因此,o2中的任何变化不得影响o1

在java中如何实现这一点?

您可以使用方法克隆对象:

Object o2 = o1.clone();
您可以使用方法克隆对象:

Object o2 = o1.clone();
您可以重写clone方法,该方法将创建整个对象图深度副本的副本并创建新对象

注意:每个类都将从类继承默认克隆实现。但必须重写该方法才能根据对象的内容执行复制

仅供参考:

默认的Object.clone是浅拷贝。然而,它是 设计用于抛出CloneNotSupportedException,除非您的对象 实现可克隆性

当您实现Cloneable时,您应该覆盖clone以使 它通过在所有需要复制的字段上调用clone来执行深度复制 他们自己是可克隆的

您可以重写clone方法,该方法将创建整个对象图深度副本的副本并创建新对象

注意:每个类都将从类继承默认克隆实现。但必须重写该方法才能根据对象的内容执行复制

仅供参考:

默认的Object.clone是浅拷贝。然而,它是 设计用于抛出CloneNotSupportedException,除非您的对象 实现可克隆性

当您实现Cloneable时,您应该覆盖clone以使 它通过在所有需要复制的字段上调用clone来执行深度复制 他们自己是可克隆的

你应该使用,然后你有一个对象的副本

然后必须重写类中的clone方法

克隆人

创建并返回此对象的副本。的确切含义 复制可能取决于对象的类。总的意图是 对于任何对象x,表达式:

你应该使用,然后你有一个对象的副本

然后必须重写类中的clone方法

克隆人

创建并返回此对象的副本。的确切含义 复制可能取决于对象的类。总的意图是 对于任何对象x,表达式:


如果需要复制对象以外的其他类,请创建一个复制构造函数或静态工厂方法。效果是这样的:

MyClass o1 = new MyClass();
MyClass o2 = new MyClass(o1); // in constructor make new object with data from o1 attributes


不要使用克隆。->

如果需要复制对象以外的其他类,请创建一个复制构造函数或静态工厂方法。效果是这样的:

MyClass o1 = new MyClass();
MyClass o2 = new MyClass(o1); // in constructor make new object with data from o1 attributes


不要使用克隆。->

克隆方法特定于对象类。如果我必须复制某个特定类的对象,我认为克隆将不起作用。@Setu,正如下面其他人所指出的,您需要覆盖特定类的克隆方法。克隆方法是特定于对象类的。如果我必须复制某个特定类的对象,我认为克隆将不起作用。@Setu,正如下面其他人所指出的,您需要覆盖特定类的克隆方法。