Бесстыдный плагин для моего собственного программного обеспечения OSS: https://bitbucket.org/stevevls/metapossum-scanner/wiki, доступно в maven central.
Типичные сценарии использования для этой библиотеки - для поиска вещей, таких как:
Set<Class<? extends MyDiscoverableHelper>> implementingClasses = new ClassesInPackageScanner()
.findImplementers("com.mypackage.service.impl", MyDiscoverableHelper.class);
или аннотированный класс, подобный этому:
Set<Class> entityClasses = new ClassesInPackageScanner()
.findAnnotatedClasses("com.mypackage.datamodel", javax.persistence.Entity.class);
, но стратегию выбора можно поменять, реализовав интерфейс и передав его в сканер.Если вы пытаетесь найти классы по имени, фрагмент кода будет выглядеть следующим образом:
Set<Class> entityClasses = new ClassesInPackageScanner().setResourceNameFilter(new ResourceNameFilter() {
public boolean acceptResourceName(java.lang.String packageName, java.lang.String fileName) {
return fileName.equals("MyClass.class");
}
}).scan("foo");
Я написал эту библиотеку некоторое время назад, потому что никогда не находил реализацию, которая мне нравилась для изучения пакетов.,Есть ряд библиотек, которые имеют свой собственный внутренний API, но я ничего не знал о том, что он упакован в хороший API.
Кроме того, изучение пакетов (пакетов) на самом деле сложно сделать правильно.Это не так просто, как может показаться на первый взгляд!