java 反射 包_java反射获取包下所有的类

本文详细介绍了Reflections库的使用,包括如何扫描路径、获取带注解的类、子类、注解类型和方法,以及资源文件的定位。通过实例展示了如何在实际项目中利用Reflections进行类型探测和注解匹配,是Java开发者理解和操作类动态加载的实用指南。
摘要由CSDN通过智能技术生成

1. 引三方包

org.reflections

reflections

0.9.11

2. 代码

//反射工具包,指明扫描路径

Reflections reflections = new Reflections("cn.qdgd.center.base.service.impl");

//获取带Handler注解的类

Set> classList = reflections.getTypesAnnotatedWith(BpsService.class);

Date now = new Date();

// 根据自己场景书写其他代码。。。

3. 部分用法

// 初始化工具类

Reflections reflections = new Reflections(new ConfigurationBuilder().forPackages(basePackages).addScanners(new SubTypesScanner()).addScanners(new FieldAnnotationsScanner()));

// 获取某个包下类型注解对应的类

Set> typeClass = reflections.getTypesAnnotatedWith(RpcInterface.class, true);

// 获取子类

Set> subTypes = reflections.getSubTypesOf(SomeType.class);

// 获取注解对应的方法

Set resources =reflections.getMethodsAnnotatedWith(SomeAnnotation.class);

// 获取注解对应的字段

Set ids = reflections.getFieldsAnnotatedWith(javax.persistence.Id.class);

// 获取特定参数对应的方法

Set someMethods = reflections.getMethodsMatchParams(long.class, int.class);

Set voidMethods = reflections.getMethodsReturn(void.class);

Set pathParamMethods =reflections.getMethodsWithAnyParamAnnotated(PathParam.class);

// 获取资源文件

Set properties = reflections.getResources(Pattern.compile(".*\\.properties"));

4. 部分使用场景

1)获取某个类型的所有子类;比如,有一个父类是TestInterface,可以获取到TestInterface的所有子类。

2)获取某个注解的所有类型/字段变量,支持注解参数匹配。

3)使用正则表达式获取所有匹配的资源文件

4)获取特定签名方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值