Cloning of An Object In Java

Posted By : Simran Ahuja | 03-Sep-2020

Let's understand the cloning of an object in Java and learn about its significance in SaaS development services.

 

The object cloning is a way of creating an exact copy of the object. The method known as a clone() of Object class is used to clone that object.

 

The java.lang.Cloneable interface must be implemented by the class whose object clone you want to create. If you don't implement the Cloneable interface, the method generates an exception called CloneNotSupportedException.

 

The clone() method is defined in the Object class in java . Syntax of the clone() method is as follows:

protected Object clone() throws CloneNotSupportedException  

 

Why Should We Use The Clone() Method?

The clone() method will save you from the extra processing task for creating the exact copy of an object. If we perform it an object by using the new keyword, it will take a lot of processing time to be performed that is why we use this method of cloning.

 

Advantage of Object Cloning

Although Object.clone() has some design issues, it is still a very popular and easy way of copying objects. Following is a list of advantages of using it:

 

You don't need to write lengthy and avoid repetition of the codes. You can just use an abstract class with a 4- or 5-line long clone() method.
It is the easiest and most effective way of copying objects, especially if you are applying it to an already developed or an old project. Just define a parent class that it, implement Cloneable in it, provide the definition of the clone() method and your task will be done.


Clone() is the fastest way to copy an array.

 

Disadvantage of Object Cloning

Following is a list of some disadvantages of this method:


To use the Object.clone() method, we have to change a lot of syntaxes in our code, like implementing a Cloneable interface, defining the clone() method, and handling CloneNotSupportedException,  finally, calling Object.clone(), etc.


We will have to implement a cloneable interface while it doesn't have any methods in it. We just have to use it to tell the Java virtual machine that we can perform clone() on our object.
Object.clone() is protected, so we will  have to provide our own clone() and indirectly call Object.clone() from it.


Object.clone() doesn't invoke any constructor so we will not have any control over object construction.


If you want to write a clone method in a child class then all of its superclasses should define the clone() method in them or inherit it from the parent class. Otherwise, the super.clone() chain will eventually fail.


Object.clone() supports only shallow copying but we will need to override it if we want to have deep cloning.


Example of the clone() method

Let's see a simple example of object cloning.

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(102,"raj");  
  
Student s2=(Student)s1.clone();  
  
System.out.println(s1.rollno+" "+s1.name);  
System.out.println(s2.rollno+" "+s2.name);  
  
}catch(CloneNotSupportedException c){}  
  
}  
}  

Output:101 raj
            101 raj

 

As you can see in the above example, both reference variables are having the same value. hence, the clone() copies the values of an object to another. So we will not have any need to write explicit code to copy the value of an object to another.

If we create another object by new keyword and assign the values of another object to this one, this will require a lot of processing on this object. So to save the processing task we use the clone() method.

 

We are a 360-degree software development company that provides cross-platform SaaS app development services to address varied software project requirements. We have an experienced team of Java, PHP, and Python developers who use advanced frameworks, tools, and SDKs to build scalable web and mobile applications with custom features. For more detail, reach us out at [email protected]

About Author

Author Image
Simran Ahuja

Simran is a bright Java Developer,with good knowledge of core java and advanced java, always ready to face challenges and explore new places.

Request for Proposal

Name is required

Comment is required

Sending message..