Java 8: иерархически сканировать аннотации на уровне пакета

В Java 8, как я могу иерархически сканировать аннотации на уровне пакета (т.е. аннотации в package-info.java файлы)?

например, я хочу выяснить для Class<x.y.z.C>первая аннотация типа A это найдено в следующих пакетах, в следующем порядке:

  1. x.y.z
  2. x.y
  3. x
  4. (корневой пакет)

При использовании отражения я могу позвонить D.class.getPackage() чтобы получить Package за x.y.zи я вижу аннотации на этом пакете.

Но нет никакого способа получить Package за x.y от x.y.z (нет никаких Package#getParent() или эквивалентный метод).

Я пытался с помощью Package.getPackage("x.y"), но это возвращает null,

Я не получил этот метод, чтобы вернуть что-либо кроме null,

Я исследовал Reflections, Guava, ByteBuddy, Fast Classpath Scanner и т. Д., Но все еще не могу найти способ иерархического сканирования аннотаций на уровне пакетов.

1 ответ

Я только что понял, что могу найти аннотации для пакета, выполнив:

Class.forName("x.y.package-info").getAnnotations()
Другие вопросы по тегам