Java Enum getDeclaringClass

В классе java.lang.Enum в Java есть замечательный метод getDeclaringClass. Я уже описывал перечисления в Java в соответствующей статье в учебнике. Но там я не упоминал этого метода. Дело в том, что getClass в случае с элементами перечисления, которые имеют своё тело, вернёт имя сгенерированного анонимного класса, а не того класса, который мы хотим. Метод getDeclaringClass же всегда возвращает имя класса исходного перечисления.

Пример:

Выведет на консоль:

Как видно, getClass у d возвращает не наше перечисление A, а сгенерированный компилятором класс, что не совсем то, что обычно хотят получить. А метод getDeclaringClass возвращает как раз наше перечисление.

Как сказано в документации, два перечисления будут одного типа только тогда, когда getDeclaringClass для них возвращает одно и то же значение.