Mega Code Archive

 
Categories / Java / Class
 

Shallow Copy Test

/* Software Architecture Design Patterns in Java by Partha Kuchana  Auerbach Publications */ class Person implements Cloneable {   //Lower-level object   private Car car;   private String name;   public Car getCar() {     return car;   }   public String getName() {     return name;   }   public void setName(String s) {     name = s;   }   public Person(String s, String t) {     name = s;     car = new Car(t);   }   public Object clone() {     //shallow copy     try {       return super.clone();     } catch (CloneNotSupportedException e) {       return null;     }   } } class Car {   private String name;   public String getName() {     return name;   }   public void setName(String s) {     name = s;   }   public Car(String s) {     name = s;   } } public class ShallowCopyTest {   public static void main(String[] args) {     //Original Object     Person p = new Person("Person-A", "Civic");     System.out.println("Original (orginal values): " + p.getName() + " - "         + p.getCar().getName());     //Clone as a shallow copy     Person q = (Person) p.clone();     System.out.println("Clone (before change): " + q.getName() + " - "         + q.getCar().getName());     //change the primitive member     q.setName("Person-B");     //change the lower-level object     q.getCar().setName("Accord");     System.out.println("Clone (after change): " + q.getName() + " - "         + q.getCar().getName());     System.out.println("Original (after clone is modified): " + p.getName()         + " - " + p.getCar().getName());   } }