Java 8:分层扫描包级注释

时间:2016-02-14 00:24:57

标签: java reflection annotations packages package-info

在Java 8中,如何分层扫描包级注释(即package-info.java文件中的注释)?

例如,我想找到Class<x.y.z.C>,按顺序找到以下包中存在的类型A的第一个注释:

  1. x.y.z
  2. x.y
  3. x
  4. (根包)
  5. 使用反射时,我可以致电D.class.getPackage()获取Package的{​​{1}},我可以看到该包装上的注释。

    但是无法从x.y.z获取Package x.y(没有x.y.z或等效方法)。

    我尝试使用Package#getParent(),但这会返回Package.getPackage("x.y")

    除了null之外,我还没有得到任何方法。

    我调查了Reflections,Guava,ByteBuddy,快速类路径扫描程序等,但仍无法找到分层扫描包级注释的方法。

1 个答案:

答案 0 :(得分:0)

我刚刚意识到我可以通过以下方式找到包的注释:

Class.forName("x.y.package-info").getAnnotations()