@Test public void testKafkaException() throws Exception { List<Class<RetriableException>> subClasses = getSubClasses(RetriableException.class, "org.apache.kafka.common.errors"); subClasses.forEach(e->{ System.out.println(e); }); } public static <E> List<Class<E>> getSubClasses(final Class<E> parentClass, final String packagePath) throws Exception { final ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( false); provider.addIncludeFilter(new AssignableTypeFilter(parentClass)); final Set<BeanDefinition> components = provider .findCandidateComponents(packagePath); final List<Class<E>> subClasses = new ArrayList<Class<E>>(); for (final BeanDefinition component : components) { @SuppressWarnings("unchecked") final Class<E> cls = (Class<E>) Class.forName(component .getBeanClassName()); if (Modifier.isAbstract(cls.getModifiers())) { continue; } subClasses.add(cls); } return subClasses; }
参考:https://blog.csdn.net/iteye_7608/article/details/82482643