java - 递归列出包中定义的所有枚举
问题描述
正在使用org.reflections
API 发现它不适用于Enums
:
List<ClassLoader> classLoadersList = new LinkedList<>();
classLoadersList.add(ClasspathHelper.contextClassLoader());
classLoadersList.add(ClasspathHelper.staticClassLoader());
Reflections reflections = new Reflections(new org.reflections.util.ConfigurationBuilder()
.setScanners(new SubTypesScanner(false), new ResourcesScanner())
.setUrls(ClasspathHelper.forClassLoader(classLoadersList.toArray(new ClassLoader[0])))
.filterInputsBy(new FilterBuilder().include(FilterBuilder.prefix("my.package"))));
Set<Class<? extends Object>> allClasses = reflections.getSubTypesOf(Enum.class);
// Above line should've returned all enums recursively, doesn't work!
有什么替代方法吗?
解决方案
您不需要太多仪式代码,只需尝试以下代码段即可。
Enums
扩展java.lang.Enum
而对象只是Java.lang
修改后的代码才能正常工作应该是:
Reflections reflections = new Reflections("newPackaes");
Set<Class<? extends Enum>> allClasses =
reflections.getSubTypesOf(Enum.class);
System.out.println(allClasses);
推荐阅读
- redirect - 如何执行 Blogspot 移动网站自动重定向?
- javascript - 将对象类型解构为“或”类型
- javascript - 有没有办法将图片上传到 html 表单,然后立即将相同的图片保存到拍摄它的手机/平板电脑中?
- lambda-calculus - SKS是否等于SKK?
- http - 如何为 pprof 启动新的 http 服务器或使用现有的 http 服务器?
- image - 尝试使用“dd”命令备份 CentOS
- r - R Markdown fig.cap 重复引用
- java - Java中列的流、过滤、分组和求和
- python - 如何过滤一个条件并根据python中的过滤条件提取数据?
- python - 当函数是 lambda 或嵌套函数时,concurrent.futures.ProcessPoolExecutor 挂起