Java 8: иерархически сканировать аннотации на уровне пакета
В Java 8, как я могу иерархически сканировать аннотации на уровне пакета (т.е. аннотации в package-info.java
файлы)?
например, я хочу выяснить для Class<x.y.z.C>
первая аннотация типа A
это найдено в следующих пакетах, в следующем порядке:
x.y.z
x.y
x
(корневой пакет)
При использовании отражения я могу позвонить 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()