寒玉 Blog
  • Home
  • Books
  • About Me
  • Categories
  • Tags
  • Archives

Java reflections


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这个类提供的上面的三个方法是获取资源的路径。


  • « 重置KafkaConnectOffset
  • 数据中台介绍 »

Published

12 2, 2019

Category

java

Tags

  • java 15
  • Powered by Pelican. Theme: Elegant by Talha Mansoor