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 () { } } }
Outputclass 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
|