List all enums defined in a package recursively

感情迁移 提交于 2021-02-10 18:33:42

问题


Was using org.reflections API to find that it doesn't work with 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!

Any alternate ways?


回答1:


You don't require so much ceremonial codes, just try the below snippet.

Enums extends java.lang.Enum while Object just Java.lang

Modified code to work properly should be:

 Reflections reflections = new Reflections("newPackaes");

    Set<Class<? extends Enum>> allClasses =
            reflections.getSubTypesOf(Enum.class);
    System.out.println(allClasses);


来源:https://stackoverflow.com/questions/59486326/list-all-enums-defined-in-a-package-recursively

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!