作为最广泛使用的编程语言之一,Java 具有广泛的特性和功能。 Java 中的对象用于完成任务;你创建对象、改变、移动、调用它们各自的方法等等。众所周知,对对象的引用存储在Java中。因此,当我们有两个引用指向同一个对象时,任何一个对象的更改将完全反映在另一个对象的相同更改中。现在,这个因素可能并不总是对我们有利,因此克隆是阻止这种情况的答案。换句话说,创建此类对象的精确副本在 Java 中称为对象克隆。
开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
根据定义,对象克隆是创建具有相似状态的原始对象的精确副本的过程。克隆时,所有属性都将转发到新克隆的对象,但可以根据需要更改或操作这些属性。必须在 Object 类中定义 clone() 方法。对于我们打算克隆对象的类来说,必须实现 java.lang.A Cloneable 接口。如果未能实现 Cloneable 接口,则会抛出异常。现在让我们看一下对象克隆的语法。
语法:
protected Object clone() throws CloneNotSupportedException
对于Object类,具体的克隆操作是通过clone方法来进行的。此方法将创建该类的精确副本,并使用对象字段的内容初始化所有字段。如果所提到的对象的类没有实现Cloneable接口,则会抛出“CloneNotSupportedException”。所有数组都被认为实现了 Cloneable 接口。这里,接口 Cloneable 没有在类 Object 上实现。因此,当我们在对象上调用克隆方法时,它会抛出运行时错误。
现在让我们通过演示了解clone()方法的工作原理。
代码:
class obj_clone implements Cloneable{ int phone_code; String f_name; obj_clone(int phone_code,String f_name){ this.phone_code=phone_code; this.f_name=f_name; } public Object clone()throws CloneNotSupportedException{ return super.clone(); } public static void main(String args[]){ try{ obj_clone s1=new obj_clone(99,"sulaksh"); obj_clone s2=(obj_clone)s1.clone(); System.out.println(s1.phone_code+" "+s1.f_name); System.out.println(s2.phone_code+" "+s2.f_name); }catch(CloneNotSupportedException c){} } }
代码说明:如您所见,我们初始化了我们的类并实现了可克隆。在这里,检查实际的类是否实现了可克隆,并在对象中使用clone(),然后继续创建副本。然后我们有两个变量:电话号码(整数数据类型)和名字(字符串数据类型)。然后我们创建了 obj_clone 类的构造函数以及带有 .this 关键字的变量。正如您所看到的,我们的对象带有clone()方法和我们之前讨论过的异常CloneNotSupportedException。此外,这里的 super.clone() 可能会抛出 CloneNotSupportedException 错误,我们稍后捕获了该错误。
然后我们有了主类,并且我们对其中的所有内容都使用了 try-catch。然后我们创建了我们类的一个对象作为 s1 和 s2。我们已经传递了第一个对象 s1 的两个参数,然后我们实现了将 s1 克隆到 s2 的 clone() 方法。最后,我们有两个输出打印语句。在 try 块之外,我们有带有前面讨论的异常的 catch 块。在示例的第 8th 行,我们已经实现了语法部分中提到和解释的clone()。执行后,上述程序将打印输出“99sulaksh 99sulaksh”。有关输出,请参阅下面所附的屏幕截图。
输出:
现在我们已经了解了什么是对象克隆以及它是如何完成的,让我们了解 Java 支持哪些克隆类型。
现在,让我们了解对象克隆的优点和缺点。
了解一切或每种方法都有其自身的局限性和功能,以下是克隆的优点。
就像前面提到的,每种方法都有其局限性和功能,现在让我们了解一下 Clone() 的缺点。
正确理解clone()或任何其他方法的优点和缺点,实现如此精彩的方法和函数可以让程序员受益匪浅。
我们了解了clone()是什么、它的功能和用途。深克隆和浅克隆之间的区别以及惰性克隆。浅克隆仅复制字段,而深克隆复制字段和值,可以根据需要实施。而惰性复制则是两者的结合。我们也了解了克隆的优点和缺点()。
以上是Java 中的对象克隆的详细内容。更多信息请关注PHP中文网其他相关文章!