开发者社区> 问答> 正文

如何递归查找包中定义的所有枚举?

使用org.reflections API来发现它不适用于枚举:

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!

还有其他方法吗?

爪哇

展开
收起
垚tutu 2019-12-26 21:18:14 1114 0
1 条回答
写回答
取消 提交回答
  • 递归实现枚举模板:

    public class DemoFangeTInshu {

    /**
     * @param args
     */
    static int count=0;
    public static void main(String[] args) {
    	// TODO Auto-generated method stub
    	char[] data = "0123456789".toCharArray();
    	int[] da = new int[11];
    	int t=10;
    	while(t-->0){
    		da[t]=(int)data[t]-'0';
    		System.out.println(da[t]);
    	}
    	dfs(da,0,9);
    	System.out.println(count);
    }
    
    private static void dfs(int[] da, int a, int length) {
    	// TODO Auto-generated method stub
    	if(a==length){
    		if(check(da)){
    			count++;
    		}
    	}
    	else{
    		for(int i=a;i<=length;i++){
    			swap(da,i,a);
    			dfs(da,a+1,length);
    			swap(da,i,a);
    		}
    	}
    }
    
    private static void swap(int[] da, int i, int a) {
    	// TODO Auto-generated method stub
    	int temp=da[i];
    	da[i]=da[a];
    	da[a]=temp;
    }
    private static boolean check(int[] da) {
    	// TODO Auto-generated method stub
    	if(**条件**) //把之间的条件用放在此处
    						return false;
    													else return true;
    }
    

    }

    2021-02-20 00:23:38
    赞同 展开评论 打赏
问答分类:
API
问答地址:
问答排行榜
最热
最新

相关电子书

更多
继承与功能组合 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载