Using clone( ) and the Cloneable Interface

The clone( ) method generates a duplicate copy of the object. Only classes that implement the Cloneable interface can be cloned. If you try to call clone( ) on a class that does not implement Cloneable, a CloneNotSupportedException is thrown.

clone() is declared as protected inside Object.
Let's look at an example of each approach.
The following program implements Cloneable and defines the method cloneTest(), which calls clone() in Object:
 
class TestClone implements Cloneable {
  int a;
  public Object clone() {
    try {
      return super.clone();
    } catch (CloneNotSupportedException e) {
      System.out.println("Cloning not allowed.");
      return this;
    }
  }
}
public class Main {
  public static void main(String args[]) {
    TestClone x1 = new TestClone();
    TestClone x2;
    x1.a = 10;
    // here, clone() is called directly.
    x2 = (TestClone) x1.clone();
    System.out.println("x1: " + x1.a);
    System.out.println("x2: " + x2.a);
  }
}

The output:


x1: 10
x2: 10
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.