问题
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