Немного сложно, и есть несколько библиотек, которые могут помочь, но в основном ...
- Посмотрите на ваш путь к классу
- Если вы имеете дело с каталогом, вы можете искать все файлы, заканчивающиеся на .class
- Если вы имеете дело с банкой, загрузите банку и найдите все файлы, заканчивающиеся на .class
- Удалите .class из конца файла, замените "\" на "." и тогда у вас есть полное имя класса.
Если у вас в классе есть весна, вы можете воспользоваться тем, что они уже делают большую часть этого:
ArrayList<String> retval = new ArrayList<Class<?>>();
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory(resolver);
String basePath = ClassUtils.convertClassNameToResourcePath("com.mypackage.to.search");
Resource[] resources;
try {
resources = resolver.getResources("classpath*:" + basePath + "/**/*.class");
} catch (IOException e) {
throw new AssertionError(e);
}
for (Resource resource : resources) {
MetadataReader reader;
try {
reader = readerFactory.getMetadataReader(resource);
} catch (IOException e) {
throw new AssertionError(e);
}
String className = reader.getClassMetadata().getClassName();
retval.add(className)
}
return retval;