【问题标题】:List all enums defined in a package recursively递归列出包中定义的所有枚举
【发布时间】:2019-12-26 09:24:00
【问题描述】:

正在使用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!

还有其他方法吗?

【问题讨论】:

    标签: java reflection enums


    【解决方案1】:

    你不需要那么多礼仪代码,试试下面的sn-p吧。

    Enums 扩展 java.lang.Enum 而 Object 只是 Java.lang

    修改后的代码才能正常工作应该是:

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

    【讨论】:

    • newPackaes 替换为您的实际包名
    • 谢谢,成功了……我确实改变了包名:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2011-09-05
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    相关资源
    最近更新 更多