我可以使用org.reflection来获得使用通配符的包类吗?

dpiehjr4  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(284)

我用的是

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

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

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

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

pxyaymoc

pxyaymoc1#

尝试

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());

相关问题