通常,这是通过称为类路径扫描的过程完成的。通常,类加载器不允许扫描类路径上的所有类。但是通常唯一使用的类加载器是
UrlClassLoader我们可以从中检索目录和jar文件的列表(请参阅getURLs),然后一个个地打开它们以列出可用的类。
这种方法由Scannotation和Reflections之类的库实现。
另一种方法是使用Java Pluggable Annotation Processing
API编写注释处理器,该处理器将在编译时收集所有带注释的类并构建索引文件以供运行时使用。
以上机制在ClassIndex库中实现。
使用类路径扫描通常比编译时索引慢两个数量级。请参阅此基准。



