카테고리 없음

org.reflection을 사용하여 와일드 카드를 사용하여 패키지 클래스를 가져올 수 있습니까?

기록만이살길 2021. 2. 24. 09:04
반응형

org.reflection을 사용하여 와일드 카드를 사용하여 패키지 클래스를 가져올 수 있습니까?

1. 질문(문제점):

나는 사용하고 있었다

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

하지만이 aproach를 사용하면 필요하지 않은 패키지 수준의 많은 주석이 반환됩니다. 내가 정말로 원하는 것은 와일드 카드를 사용하여 깊은 패키지 수준 만 되 돌리는 것입니다.

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

내가 정말로 필요한 메소드가 ".deep"패키지 수준에 있기 때문에 ... FilterBuilder와 많은 조합을 시도 해본 다음 내가 뭔가 잘못하고 있는지 또는이 API로 이것이 불가능한지 모르겠습니다.

2. 해결방안:

시험

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());
65820443
반응형