Reflections 通过扫描 classpath,索引元数据,允许在运行时查询这些元数据,也可以保存收集项目中多个模块的元数据信息。
使用 Reflections 可以查询以下元数据信息:
- 获得某个类型的所有子类型
- 获得标记了某个注解的所有类型/成员变量,支持注解参数匹配
- 使用正则表达式获得所有匹配的资源文件
- 获得所有特定签名(包括参数,参数注解,返回值)的方法
Reflections 依赖 Google 的 Guava 库和 Javassist 库。
项目导入:
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.10</version>
</dependency>
常用类:
- ClasspathHelper
public class TestReflect {
public static void main(String[] args) {
URL url = ClasspathHelper.forClass(TestReflect.class);
System.out.println(url.getFile());
Set<URL> urlSet = ClasspathHelper.forPackage("com\\.kevin\\.reflection\\.test");
for (URL u: urlSet ) {
System.out.println(u);
}
urlSet = ClasspathHelper.forResource("\\");
for (URL u: urlSet ) {
System.out.println(u);
}
}
}
通过上面的测试代码可以看出ClasspathHelper这个类提供的上面的三个方法是获取资源的路径。