苏州市网站建设公司,亚马逊网站运营怎么做,江门网站设计华企立方,推荐几个没封的网站java中的深度克隆浅克隆什么是对象克隆#xff1f; 对象克隆是生成具有不同名称的对象的精确字段到字段副本的过程。 克隆的对象在内存中有自己的空间#xff0c;可在其中复制原始对象的内容。 这就是为什么在克隆后更改原始对象的内容时#xff0c;所做的更改不会反映在克隆… java中的深度克隆浅克隆 什么是对象克隆 对象克隆是生成具有不同名称的对象的精确字段到字段副本的过程。 克隆的对象在内存中有自己的空间可在其中复制原始对象的内容。 这就是为什么在克隆后更改原始对象的内容时所做的更改不会反映在克隆对象中的原因。 我们可以在Java中克隆任何对象吗 不我们不能。 当我们尝试直接克隆未实现名为Cloneable的标记接口的对象实例时将导致一个名为CloneNotSupportedException的异常。 因此为了允许克隆对象实例相应的对象类必须实现Cloneable接口。 例如 - public class Employee {private String name;public Employee(String name) {this.name name;}public String getName() {return name;}public static void main(String[] args) {Employee emp new Employee(Abhi);try {Employee emp2 (Employee) emp.clone();System.out.println(emp2.getName());} catch (CloneNotSupportedException e) {e.printStackTrace();}}
} 上面的代码在执行时会引发异常例如– java.lang.CloneNotSupportedException: Employeeat java.base/java.lang.Object.clone(Native Method)at Employee.main(Employee.java:16) 请注意Cloneable是标记接口 这意味着它没有任何克隆方法规范。 在上面的代码片段中实现Cloneable只是向JVM指示可以克隆Employee类实例并且Object类的clone方法对于Employee类而言是合法的。 下面是如何正确克隆Employee类实例以及如何在Employee类中覆盖Object的clone方法的方法。 public class Employee implements Cloneable {private String name;public Employee(String name) {this.name name;}public String getName() {return name;}public Object clone()throws CloneNotSupportedException{ return (Employee)super.clone(); }public static void main(String[] args) {Employee emp new Employee(Abhi);try {Employee emp2 (Employee) emp.clone();System.out.println(emp2.getName());} catch (CloneNotSupportedException e) {e.printStackTrace();}}
} 其他标记接口是Serializable Cloneable和Remote接口。 翻译自: https://www.javacodegeeks.com/2018/03/understanding-cloneable-interface-in-java.htmljava中的深度克隆浅克隆