Java 不进行序列化的深度克隆
我是一名非常新的java学习者,我想在没有序列化的情况下执行深度克隆,我在互联网上读了一些文章,但仍然对没有序列化的深度克隆表示怀疑。所以我想知道,在进行深度克隆时,我还需要遵循其他规则吗,下面是我的程序 Department.java Employee.java TestCloning.java 输出 除了实现无序列化的深度克隆,还有其他选择吗?如果有,请提供链接。试试这个Java 不进行序列化的深度克隆,java,clone,Java,Clone,我是一名非常新的java学习者,我想在没有序列化的情况下执行深度克隆,我在互联网上读了一些文章,但仍然对没有序列化的深度克隆表示怀疑。所以我想知道,在进行深度克隆时,我还需要遵循其他规则吗,下面是我的程序 Department.java Employee.java TestCloning.java 输出 除了实现无序列化的深度克隆,还有其他选择吗?如果有,请提供链接。试试这个 我没看到你做任何连载?!没有任何其他方法……简单的方法似乎更像是一个没有实际用途的哲学问题,因为深度克隆总是会带来缺点和
我没看到你做任何连载?!没有任何其他方法……简单的方法似乎更像是一个没有实际用途的哲学问题,因为深度克隆总是会带来缺点和陷阱。我强烈建议首先检查一下。如上所述,克隆会带来很多问题,如果你没有经验,你最终会把自己的头发拔出来
package com.deepclone;
public class Department {
private int id;
private String name;
public Department(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.deepclone;
public class Employee implements Cloneable {
private String employeeId;
private String empName;
private Department department;
public Employee(String employeeId, String empName, Department department) {
this.employeeId = employeeId;
this.empName = empName;
this.department = department;
}
@Override
protected Object clone() throws CloneNotSupportedException {
Employee employee = new Employee(employeeId, empName, new Department(
department.getId(), department.getName()));
return employee;
}
public String getEmployeeId() {
return employeeId;
}
public void setEmployeeId(String employeeId) {
this.employeeId = employeeId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
}
package com.deepclone;
public class TestClonning1 {
public static void main(String[] args) throws CloneNotSupportedException {
Department hrDepartment = new Department(10, "HR");
Employee employee = new Employee("1", "rajeev", hrDepartment);
System.out.println(employee.getDepartment().getName());
Employee cloneEmployee = (Employee) employee.clone();
System.out.println(cloneEmployee.getDepartment().getName());
cloneEmployee.getDepartment().setName("it");
System.out.println(employee.getDepartment().getName());
System.out.println(cloneEmployee.getDepartment().getName());
}
}
HR
HR
HR
it
Cloner cloner = new Cloner();
MyClass other = ...;
MyClass clone = cloner.deepClone(other);