Я знаю, что могу получить открытые статические члены класса, выполнив что-то вроде:
obj.getClass().getFields()
но это не дает мне перечисления. Я хотел бы иметь возможность получить их из объекта Class, возвращаемого методом getClass. Есть идеи?
(Превратился в вики сообщества, так как похоже, что есть возможность для значительного расширения, например, для включения комментариев tackline. Во мне нет смысла просто транскрибировать комментарии, когда все могут его расширять.)
Вы имеете в виду перечисления, вложенные в класс верхнего уровня? Если это так, используйте <a href="http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getDeclaredClasses()" rel="nofollow noreferrer">Class.getDeclaredClasses()</a> и просматривайте результаты, чтобы увидеть, являются ли какие-либо из вложенных классов перечислениями. Самый простой способ проверки каждого вложенного класса - использовать <a href="http://java.sun.com/javase/6/docs/api/java/lang/Class.html#isEnum()" rel="nofollow noreferrer">Class.isEnum()</a>; если вы хотите перебрать значения в перечислении, то <a href="http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getEnumConstants()" rel="nofollow noreferrer">Class.getEnumConstants()</a> - это путь.
<a href="http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getDeclaredClasses()" rel="nofollow noreferrer">Class.getDeclaredClasses()</a>
<a href="http://java.sun.com/javase/6/docs/api/java/lang/Class.html#isEnum()" rel="nofollow noreferrer">Class.isEnum()</a>
<a href="http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getEnumConstants()" rel="nofollow noreferrer">Class.getEnumConstants()</a>
obj.getClass (). getEnumConstants ()