Перечислите все классы в пакете, который реализует данный интерфейс - PullRequest
0 голосов
/ 04 января 2012

Я хочу перечислить / перечислить (во время выполнения) в моей Java-программе все классы, которые реализуют данный интерфейс, и получить имя класса. Является ли это возможным ? Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 04 января 2012

Чтобы понять, как это сделать с помощью отражения:

Вы можете начать с Thread.currentThread().getContextClassLoader(). Используя имя пакета в качестве пути, получите ресурсы: Enumeration<URL> resources = classLoader.getResources(path);

Тогда вам придется декодировать имена файлов из ресурсов и выполнять итерацию по ним (рекурсивно, поскольку некоторые из них могут быть каталогами). Отфильтруйте ресурсы для файлов .class, создайте экземпляры классов с помощью Class.forName() и проверьте интерфейсы, которые они реализуют.

1 голос
/ 04 января 2012

Вы должны использовать Java Отражение

Эта ссылка предлагает учебное пособие, которое охватывает все, что вы можете сделать с помощью Reflection. Вы можете создать свой код, начиная с этого

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