[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/CodeForHunger/java-basics/master/core-java/methods/DeepCopy.java [Back]  [Original]

package methods;

/**
 * In the deep copy, we create a clone which is independent of original object and making changes in the cloned object should not affect original object.
 * So for deep copy we need to ensure all the member class also implement the Cloneable interface and override the clone() method of the object class.
 */
import java.util.ArrayList;

class DeepCopy1 {
	int x, y;
}

class DeepCopy2 implements Cloneable {
	int a, b;
	DeepCopy1 c = new DeepCopy1();
	public Object clone() throws CloneNotSupportedException {
		DeepCopy2 t = (DeepCopy2)super.clone();
		t.c = new DeepCopy1();
		
		return t;
	}
}

public class DeepCopy {

	public static void main(String[] args) throws CloneNotSupportedException {
		DeepCopy2 t1 = new DeepCopy2();
		t1.a = 10;
		t1.b = 20;
		t1.c.x = 30;
		t1.c.y = 40;
		
		DeepCopy2 t3 = (DeepCopy2)t1.clone();
		t3.a = 100;
		t3.c.x = 300;
		
		System.out.println(t1.a + " " + t1.b + " " + t1.c.x + " " +t1.c.y);
		System.out.println(t3.a + " " + t3.b + " " + t3.c.x + " " + t3.c.y);

	}
}

Web Proxy Viewer  |  New URL  |  Original Page