如何构建使用我的自定义注释注释的类列表?

yeg*_*256 31 java annotations

我想获得应用程序中使用@Custom注释注释的完整类列表.这项手术的最佳机制是什么?

PS.例如,JAX-RS实现如何查找所有使用注释的类@Path?我想使用相同的机制.

Sła*_*wek 23

通常这是使用称为类路径扫描的过程完成的.通常,类加载器不允许扫描类路径上的所有类.但通常唯一使用的类加载器是UrlClassLoader我们可以从中检索目录和jar文件列表(请参阅getURL)并逐个打开它们以列出可用的类.

这种方法由ScannotationReflections等库实现.

另一种方法是使用Java Pluggable Annotation Processing API编写注释处理器,该处理器将在编译时收集所有带注释的类,并构建索引文件以供运行时使用.

上述机制在ClassIndex库中实现.

使用类路径扫描通常比编译时索引慢两个数量级.看到这个基准.


sig*_*ned 10

我知道这是一个老问题,但是我在自己的类路径扫描搜索中遇到了它并找到了另一个好的答案,所以我在这里添加它.

Google Guava有一个ClassPath对象,提供"尽力而为"的类路径扫描(这是所有类路径扫描实用程序提供的,实际上).由于Guava是一个广泛采用的,经过精心维护的实用程序库,对于(a)已经在使用Guava,或者(b)需要一个可以依赖于类路径扫描的稳定库的项目来说,这是一个很好的选择.