The clone() method of Stack class is used to return a shallow copy of this Stack. It just creates a copy of the Stack. The copy will have a reference to a clone of the internal data array but not a reference to the original internal data array.
Syntax:
Stack.clone()
Parameters: The method does not take any parameter.
Return Value: The method returns an Object which is just the copy of the Stack.
Exception: This method throws CloneNotSupportedException if the object’s class does not support the Cloneable interface. Below programs illustrate the Java.util.Stack.clone() method:
Program 1:
Java
// Java code to illustrate clone()
import java.util.*;
// Driver Class
public class StackDemo {
// Main Method
public static void main(String args[])
{
// Creating an empty Stack
Stack<String> stack = new Stack<String>();
// Use add() method to add elements into the Stack
stack.add("Welcome");
stack.add("To");
stack.add("Geeks");
stack.add("4");
stack.add("Geeks");
// Displaying the Stack
System.out.println("Stack: " + stack);
// Creating another Stack to copy
Object copy_Stack = stack.clone();
// Displaying the copy of Stack
System.out.println("The cloned Stack is: "
+ copy_Stack);
}
}
Stack: [Welcome, To, Geeks, 4, Geeks] The cloned Stack is: [Welcome, To, Geeks, 4, Geeks]
Program 2:
Java
// Java code to illustrate clone()
import java.util.*;
// Driver Class
public class StackDemo {
// Main Method
public static void main(String args[])
{
// Creating an empty Stack
Stack<Integer> stack = new Stack<Integer>();
// Use add() method to add elements into the Queue
stack.add(10);
stack.add(15);
stack.add(30);
stack.add(20);
stack.add(5);
// Displaying the Stack
System.out.println("Stack: " + stack);
// Creating another Stack to copy
Object copy_Stack = (Stack)stack.clone();
// Displaying the copy of Stack
System.out.println("The cloned Stack is: "
+ copy_Stack);
}
}
Stack: [10, 15, 30, 20, 5] The cloned Stack is: [10, 15, 30, 20, 5]