java reflections_java反射工具Reflections用法

java反射工具Reflections用法

一、引入maven依赖

org.reflections

reflections

0.9.10

二、用法示例:

reflections 中包含很多的Scanner ,也就是扫描器,调用对应的方法时需要有配置对应的扫描器,不然程序会抛出异常.//扫描包含my.package的url,包括'my.package'开头的包路径,使用默认扫描器

Reflections reflections = new Reflections("my.package");public class testReflections {

private static final Reflections reflections;

static {

//如果不加filterInputsBy,那么会扫描classpath,获取当前扫描路径所在项目的所有包

reflections= new Reflections(new ConfigurationBuilder()

.forPackages("com.study.demo")//指定扫描路径

.filterInputsBy(new FilterBuilder().excludePackage("mystu")) //排除某个包,注意不能是扫描包子包,否则不生效

.setScanners(new MethodParameterScanner())// 添加方法参数扫描工具,可以根据需要向该方法传入多个扫描工具

);

}

public static void main(String[] args) {

// 1、根据方法参数,反射获取扫描路径下所有匹配的方法

Set methodsMatchParams = reflections.getMethodsMatchParams(String.class);

methodsMatchParams.forEach(System.out::println);

}

}

相关Api

一些扫描器//SubTypesScanner:子类扫描器

Set> set = reflections.getSubTypesOf(User.class);

// 获取void返回值方法

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

// FieldAnnotationsScanner:被注解字段扫描器,获取特定注解的字段

Set fields = reflections.getFieldsAnnotatedWith(NotNull.class);

ReflectionUtils根据方法的可见性,前缀名,入参个数,获取某个类的对应方法Set getters = ReflectionUtils.getAllMethods(User.class,

withModifier(Modifier.PUBLIC), withPrefix("set"), withParametersCount(1));根据方法入参返回值类获某个类的所有方法//获取List的方法:入参为Collection,返回值为boolean

Set methods = ReflectionUtils.getAllMethods(List.class,

withParametersAssignableTo(Collection.class),

withReturnType(boolean.class));获取某个类特定类型的所有字段//该方法可以传入一些参数,比如过滤出带注解的参数:withAnnotation(NonNull.class)

Set fields = ReflectionUtils.getAllFields(Animal.class, withTypeAssignableTo(String.class));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值