Close

Java - Enum getDeclaringClass() vs getClass()

Java 

Enum.getDeclaringClass() and getClass() will return different classes if the calling enum element has declared a body. Enum allows to add a body with an element. We use a pair of curly brackets to define a body. We usually do that to override a method. Declaring a body will create an anonymous class.

package com.logicbig.example;

public class DeclaringClassExample {

public static void main (String[] args) {
System.out.println(Test.A.getClass());
System.out.println(Test.A.getDeclaringClass());

System.out.println(Test.B.getClass());
System.out.println(Test.B.getDeclaringClass());

System.out.println(Test.C.getClass());
System.out.println(Test.C.getDeclaringClass());
}

enum Test {
A,
B {},
C {
@Override
void aMethod () {
super.aMethod();
}
};

void aMethod () {
}
}
}

Output

class com.logicbig.example.DeclaringClassExample$Test
class com.logicbig.example.DeclaringClassExample$Test
class com.logicbig.example.DeclaringClassExample$Test$1
class com.logicbig.example.DeclaringClassExample$Test
class com.logicbig.example.DeclaringClassExample$Test$2
class com.logicbig.example.DeclaringClassExample$Test




See Also