Отражение Java: Как я могу получить анонимные внутренние классы? - PullRequest
5 голосов
/ 31 октября 2009

У меня есть анонимный внутренний класс внутри другого класса (SomeClass).

И SomeClass.class.getClasses(), и SomeClass.class.getDeclaredClasses() возвращают пустые массивы.

Я не смог найти намеки на это в Class 'Javadocs.

Можно ли каким-то образом получить анонимные внутренние классы, используя отражение?

Какие еще заметные различия между анонимными внутренними классами и обычными внутренними классами?

Ответы [ 2 ]

4 голосов
/ 31 октября 2009

Вы можете попробовать поиск методом перебора класса $ 1 ... класса $ n, пока не найдете больше.

0 голосов
/ 31 октября 2009

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

Анонимные внутренние классы имеют имена, включающий метод и дополнительные синтетические поля для копирования внешних локальных переменных, которые были скопированы. Один класс почти такой же, как другой во время выполнения. Помните, что 1.1 ввел внутренние классы, но файлы классов практически не изменились с 1.0.

...