Trong nhiều trường hợp ta muốn clone object ra một object tương ứng để giúp chúng ta thao tác trên object mà không làm ảnh hưởng đến object gốc.
Trong java việc này ra đơn giản. Để clone một object ta implement Cloneable như trong ví dụ sau.
public class Employee implements Cloneable {
private String EmployeeID;
private String FullName;
public Employee() {
}
public String getEmployeeID() {
return EmployeeID;
}
public void setEmployeeID(String employeeID) {
EmployeeID = employeeID;
}
public String getFullName() {
return FullName;
}
public void setFullName(String fullName) {
FullName = fullName;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
Sử dụng như sau:
Employee employee = new Employee();
employee.setFullName("Đức");
try {
Employee employeeClone = (Employee) employee.clone();
employeeClone.setFullName("Đức cloned");
employee.getFullName(); // trả về Đức
employeeClone.getFullName(); // trả về Đức cloned
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
OK vậy ta đã tạo được object clone. Nhưng với các object phức tạo như chứa các list con, trong list con lại còn list con bé hơn nữa. Với các object phức tạp như thế này thì đòi hỏi các object con phải implements Cloneable và for để tạo ra các object clone. Sử dụng cách này rất mất công và tốn time (chưa xét hiệu năng).
Và cách mà em đưa ra là tận dụng thư viện GSon để clone object. Như ví dụ trên để tạo Object Clone em làm như sau:
Employee employee = new Employee();
employee.setFullNam
c");
Gson gson = ne
n();
String jsonObject = gson.toJson(e
ee);
Employee employeeCloned = gson.fromJson(jsonObject, Employe
ss);
employeeCloned.getFullName();
Với cách này ta sẽ được một Object cloned với toàn bộ các property một cách đơn giản và nhanh chóng.
Download thư viện gson tại https://github.com/google/gson
Download thư viện gson tại https://github.com/google/gson