Java.lang.Enum.clone() Method



The java.lang.Enum.clone() method guarantees that enums are never cloned, which is necessary to preserve their "singleton" status.


Following is the declaration for java.lang.Enum.clone() method

protected final Object clone() throws CloneNotSupportedException


  • NA

Return Value

This method does not return any value.


  • CloneNotSupportedException -- if the object's class does not support the Cloneable interface. Subclasses that override the clone method can also throw this exception to indicate that an instance cannot be cloned.


The following example shows the usage of java.lang.Enum.clone() method.

package com.tutorialspoint;

import java.lang.*;

// enum showing Mobile prices
enum Mobile {
   Samsung(400), Nokia(250);
   int price;
   Mobile(int p) {
      price = p;
   int showPrice() {
      return price;

public class EnumDemo {

   public static void main(String args[]) {

      System.out.println("Enums can never be cloned...");
      EnumDemo t = new EnumDemo() {
         protected final Object clone() throws CloneNotSupportedException {
            throw new CloneNotSupportedException();

      System.out.println("CellPhone List:");
      for(Mobile m : Mobile.values()) {
         System.out.println(m + " costs " + m.showPrice() + " dollars");

Let us compile and run the above program, this will produce the following result:

Enums can never be cloned...
CellPhone List:
Samsung costs 400 dollars
Nokia costs 250 dollars