首页 > 解决方案 > 我可以使用 org.reflection 来获取使用通配符的包类吗?

问题描述

我正在使用

Reflections reflections = new Reflections("com.mypackage.root", new MethodAnnotationsScanner()); 

但是通过这种方法,我得到了很多我不需要的包级别的注释......我真正想要的是这样的东西,使用通配符只返回深层包级别。

Reflections reflections = new Reflections("com.mypackage.root.*.deep", new MethodAnnotationsScanner())

因为我真正需要的方法是在“.deep”包级别......我尝试了很多与FilterBuilder的组合,然后我不知道我是否做错了什么,或者这对于这个API是不可能的

标签: javareflectionreflections

解决方案


尝试

Reflections reflections = new Reflections("com.mypackage.root", new MethodAnnotationsScanner());

Set<Method> methods = reflections
        .getMethodsAnnotatedWith(MyAnnotation.class).stream()
        .filter(method -> method.getDeclaringClass().getPackage().getName().matches("com.mypackage.root.*.deep"))
        .collect(Collectors.toSet());

推荐阅读