Java - Enum getDeclaringClass() method



Description

The Java Enum getDeclaringClass() method returns the Class object corresponding to this enum constant's enum type. Two enum constants e1 and e2 are of the same enum type if and only if e1.getDeclaringClass() == e2.getDeclaringClass().

Declaration

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

public final Class<E> getDeclaringClass()

Parameters

NA

Return Value

This method returns the Class object corresponding to this enum constant's enum type.

Exception

NA

Example 1

The following example shows the usage of getDeclaringClass() method for an enum using its reference.

package com.tutorialspoint;

// enum showing topics covered under Tutorials
enum Tutorials {  
   Java, HTML, Python; 
}  
public class EnumDemo { 
   public static void main(String args[]) { 
      Tutorials t1, t2, t3;     
      t1 = Tutorials.Java; 
      t2 = Tutorials.HTML; 
      t3 = Tutorials.Python; 
    
      // returns the Class object corresponding to an enum
      System.out.println(t2.getDeclaringClass()); 
   } 
} 

Output

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

class com.tutorialspoint.Tutorials

Example 2

The following example shows the usage of getDeclaringClass() method for an enum using its type directly.

package com.tutorialspoint;

// enum showing topics covered under Tutorials
enum Tutorials {  
   Java, HTML, Python; 
}  
public class EnumDemo { 
   public static void main(String args[]) { 
      Tutorials t1, t2, t3;     
      t1 = Tutorials.Java; 
      t2 = Tutorials.HTML; 
      t3 = Tutorials.Python; 
    
      // returns the Class object corresponding to an enum
      System.out.println(Tutorials.HTML.getDeclaringClass()); 
   } 
} 

Output

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

class com.tutorialspoint.Tutorials

Example 3

The following example shows the usage of getDeclaringClass() method for an enum to check if enum are of same type. As we're comparing two enums of different types, program will give compiler error.

package com.tutorialspoint;

// enum showing topics covered under Tutorials
enum Tutorials {  
   Java, HTML, Python; 
} 

// a different enum with same values
enum Tutorial {  
   Java, HTML, Python; 
}
public class EnumDemo { 
   public static void main(String args[]) {
      if(Tutorials.HTML.getDeclaringClass() == Tutorials.Python.getDeclaringClass()) {
         System.out.println("Enums are of same type");
      }
      if(Tutorial.HTML.getDeclaringClass() == Tutorials.Python.getDeclaringClass()) {
         System.out.println("Enums are of same type");
      }      
   } 
} 

Output

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

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Incompatible operand types Class<Tutorial> and Class<Tutorials>

	at com.tutorialspoint.EnumDemo.main(EnumDemo.java:20)
java_lang_enum.htm
Advertisements