Object Cloning in Java

Class ที่ต้องการจะให้ Clone จะต้อง implemented java.lang.Cloneable interface และเรียก method clone() ถ้าเราไม่ได้ implemented Cloneable interface, clone() method จะ throw CloneNotSupportedException.

clone() method มี Syntax ดังนี้ :

protected Object clone() throws CloneNotSupportedException

ตัวอย่างการใช้งาน

public class Person implements Cloneable {

private String name;
private int age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public Object clone()throws CloneNotSupportedException{
return super.clone();
}
}

สร้าง main class เพื่อทดสอบกันครับ

public class CloneableExample {

public static void main(String[] args) throws CloneNotSupportedException {

Person chiwa = new Person();
chiwa.setName("Chiwa");
chiwa.setAge(30);

Person pea = (Person) chiwa.clone();

chiwa.setName("new name");
System.out.println(pea.getName());

chiwa.setName("new name");
System.out.println(chiwa.getName());
System.out.println(pea.getName());
}
}

output :

Chiwa
new name
Chiwa

แต่ถ้าหากว่าใครใช้ Spring ก็มี Utility Class ที่ชื่อว่า BeanUtils เข้ามาช่วย

public class CloneableExample {

public static void main(String[] args) throws CloneNotSupportedException {

Person chiwa = new Person();
chiwa.setName("Chiwa");
chiwa.setAge(30);

Person pea = new Person();

BeanUtils.copyProperties(chiwa, pea);

chiwa.setName("new name");
System.out.println(pea.getName());

chiwa.setName("new name");
System.out.println(chiwa.getName());
System.out.println(pea.getName());
}
}

output :

Chiwa
new name
Chiwa

เลือกใช้กันตามสะดวกครับ

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.