首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

获取种的所有子类

2013-03-19 
获取类的所有子类开发过程中,有时需要获取某个包下的所有类,或者基于指定规则获取类清单。比较常见的解决方

获取类的所有子类

开发过程中,有时需要获取某个包下的所有类,或者基于指定规则获取类清单。比较常见的解决方案是自己遍历目录,查找所有.class文件。下面这个方法使用spring工具类实现,简化过程,不再需要自己遍历目录 /**      * 获取在指定包下某个class的所有非抽象子类      *      * @param parentClass      *            父类      * @param packagePath      *            指定包,格式如"com/iteye/strongzhu"      * @return 该父类对应的所有子类列表      */     @SneakyThrows(ClassNotFoundException.class)     public static <E> List<Class<E>> getSubClasses(final Class<E> parentClass,               final String packagePath) {          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;     }

?

热点排行