Object cloning trong java
Object cloning là cách để tạo ra một bản sao chính xác của một đối tượng bị clone. Phương thức clone() được sử dụng để tạo ra một object mới.
Class của đối tượng mà chúng ta muốn clone phải được implements từ interface java.lang.Cloneable. Nếu chúng ta không implements interface Cloneable, phương thức clone() sinh ra lỗi ngoại lệ CloneNotSupportedException.
Phương thức phương thức clone() được định nghĩa trong lớp Object có cú pháp như sau:
protected native Object clone() throws CloneNotSupportedException;
Tại sao sử dụng phương thức clone()
Phương thức clone () tiết kiệm tác vụ xử lý bổ sung để tạo ra một bản sao chính xác của một đối tượng. Nếu chúng ta thực hiện nó bằng cách sử dụng từ khoá new sẽ mất rất nhiều tiến trình xử lý được thực hiện, đó là lý do tại sao chúng ta sử dụng object cloning.
Lợi ích của object cloning
Giảm thiểu tác vụ xử lý
Ví dụ về phương thức clone() (object cloning)
public class Student implements Cloneable { int rollno; String name; Student(int rollno, String name) { this.rollno = rollno; this.name = name; } public Object clone() throws CloneNotSupportedException { return super.clone(); } public static void main(String args[]) { try { Student s1 = new Student(101, "An"); Student s2 = (Student) s1.clone(); System.out.println(s1.rollno + " " + s1.name); System.out.println(s2.rollno + " " + s2.name); } catch (CloneNotSupportedException c) { } } }
Output:
101 An 101 An
Như bạn đã thấy trong ví dụ trên, cả hai biến tham chiếu có giá trị giống nhau. Vì phương thức clone() đã tạo ra một ô nhớ mới và sao chép giá trị của đối tượng này sang đối tượng khác.
Nếu bạn tạo một đối tượng khác bằng cách sử dụng từ khóa new và gán các giá trị của đối tượng khác cho đối tượng vừa tạo ra, nó sẽ mất nhiều tiến trình để xử lý trên đối tượng này. Vì vậy để tiết kiệm tác vụ xử lý ta sử dụng phương thức clone().