Используйте org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider
API
Поставщик компонентов, который сканирует путь к классам из базового пакета. Затем он применяет фильтры exclude и include к полученным классам для поиска кандидатов.
ClassPathScanningCandidateComponentProvider scanner =
new ClassPathScanningCandidateComponentProvider(<DO_YOU_WANT_TO_USE_DEFALT_FILTER>);
scanner.addIncludeFilter(new AnnotationTypeFilter(<TYPE_YOUR_ANNOTATION_HERE>.class));
for (BeanDefinition bd : scanner.findCandidateComponents(<TYPE_YOUR_BASE_PACKAGE_HERE>))
System.out.println(bd.getBeanClassName());
Немного offtopic, но Spring также делает что-то подобное, с помощью < context:component-сканирование> , из которого Вы могли, возможно, изучить исходный код?
Spring обеспечивает возможность автоматического обнаружения 'стереотипных' классов [...]. Автоматически обнаружить эти классы и зарегистрировать соответствующие бобы требуют включения [элемент context:component-сканирования].
Я не уверен, поможет ли это Вам или нет, но Вы могли бы изучить апачский проект открытия свободного городского населения.
открытияAPI Classloader не имеет "перечислить" метода, потому что загрузка класса является действием "по запросу" - у Вас обычно есть тысячи классов в Вашем пути к классу, только часть которого когда-либо будет необходима (rt.jar один составляют 48 МБ в наше время!).
Так, даже если бы Вы могли , перечисляют все классы, это было бы время очень - и потребление памяти.
простой подход должен перечислить соответствующие классы в файле настройки (xml или безотносительно исков Ваше воображение); если Вы хотите сделать это автоматически, ограничьте себя одним JAR или одним каталогом класса.
Попробуйте Scannotation.
Это может использоваться для поиска пути к классу или каталога lib веб-приложения для определенных аннотаций.
Вы можете использовать http://code.google.com/p/annovention/
И еще одно решение - Отражения Google .
Краткий обзор: