Как я могу узнать, какие перечисления определены классом? - PullRequest
3 голосов
/ 13 октября 2008

Я знаю, что могу получить открытые статические члены класса, выполнив что-то вроде:

obj.getClass().getFields()

но это не дает мне перечисления. Я хотел бы иметь возможность получить их из объекта Class, возвращаемого методом getClass. Есть идеи?

Ответы [ 2 ]

6 голосов
/ 13 октября 2008

(Превратился в вики сообщества, так как похоже, что есть возможность для значительного расширения, например, для включения комментариев 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> - это путь.

1 голос
/ 13 октября 2008

obj.getClass (). getEnumConstants ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...