反射工具抽象类,处理方法及字段。主要通过MethodCallback,MethodFilter,FieldCallback,FieldFilter。

其类结构如下

1、主要方法

1.1 doWithMethods

遍历clazz层级关系的方法(包含父类的),通过MethodFilter过滤 ,MethodCallback回调来处理方法。在处理父类时,如果方法过滤器不为用户定义方法或者为用户定义方法不是不包含Object的方法。如果为接口类型,则处理接口方法

public static void doWithMethods(Class<?> clazz, MethodCallback mc, @Nullable MethodFilter mf) {// Keep backing up the inheritance hierarchy.Method[] methods = getDeclaredMethods(clazz, false);for (Method method : methods) {if (mf != null && !mf.matches(method)) {continue;}try {mc.doWith(method);}catch (IllegalAccessException ex) {throw new IllegalStateException("Not allowed to access method '" + method.getName() + "': " + ex);}}if (clazz.getSuperclass() != null && (mf != USER_DECLARED_METHODS || clazz.getSuperclass() != Object.class)) {doWithMethods(clazz.getSuperclass(), mc, mf);}else if (clazz.isInterface()) {for (Class<?> superIfc : clazz.getInterfaces()) {doWithMethods(superIfc, mc, mf);}}}

1.2 doWithLocalMethods

只处理本层级的方法,不包含父类的

public static void doWithLocalMethods(Class<?> clazz, MethodCallback mc) {Method[] methods = getDeclaredMethods(clazz, false);for (Method method : methods) {try {mc.doWith(method);}catch (IllegalAccessException ex) {throw new IllegalStateException("Not allowed to access method '" + method.getName() + "': " + ex);}}}

spring中的ReflectionUtil相关推荐

  1. Spring中配置DataSource数据源的几种选择

    Spring中配置DataSource数据源的几种选择 在Spring框架中有如下3种获得DataSource对象的方法: 从JNDI获得DataSource. 从第三方的连接池获得DataSourc ...

  2. 详解设计模式在Spring中的应用

    设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆. 今天,螃蟹在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了 ...

  3. Spring中利用applicationContext.xml文件实例化对象和调用方法

    Spring中实例化对象和调用方法入门 1.jar包和xml的准备 已上传至百度云盘,链接: https://pan.baidu.com/s/1CY0xQq3GLK06iX7tVLnp3Q 提取码: ...

  4. 【spring 5】AOP:spring中对于AOP的的实现

    在前两篇博客中,介绍了AOP实现的基础:静态代理和动态代理,这篇博客介绍spring中AOP的实现. 一.采用Annotation方式 首先引入jar包:aspectjrt.jar && ...

  5. Spring中WebApplicationContext

    ApplicationContext是Spring的核心,Context我们通常解释为上下文环境,我想用"容器"来表述它更容易理解一 些,ApplicationContext则是& ...

  6. Spring中使用Schedule调度

    在spring中两种办法使用调度,以下使用是在spring4.0中. 一.基于application配置文件,配置入下: 1 <bean id="jobDetail" cla ...

  7. Spring中SmartLifecycle和Lifecycle的作用和区别

    欢迎关注方志朋的博客,回复"666"获面试宝典 本文基于SpringBoot 2.5.0-M2讲解Spring中Lifecycle和SmartLifecycle的作用和区别,以及如 ...

  8. 惊呆了,Spring中竟然有12种定义bean的方法

    前言 在庞大的 Java 技术体系中,Spring 有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜. 我们都知道 Spring 是创建和管理bean的工厂,它提供了多种方式定义 bean,能 ...

  9. MyBatis 和 Spring 中的 23 种设计模式,真香,拿去用吧!

    学习源码框架,为什么要从Mybatis框架入手?在 MyBatis 3.5.1 这个版中有 968 个类. 2770 个字段. 8422个方法. 42504 行代码. 186428个指令码.其源码体量 ...

最新文章

  1. 初等数学O 集合论基础 第一节 集合及其基本运算、de Moivre公式
  2. SAP Kyma上都有哪些namespace?
  3. spring mvc学习(13)windows上安装maven
  4. 存储过程循环遍历一个月的每一天的函数_JavaScript 循环:如何处理 async/await
  5. 2岁男童入住自如后患白血病离世 自如回复:道歉做不到
  6. RTMP协议及H264文件格式分析
  7. IDEA打包Springboot项目,运行
  8. qwidget设置背景透明_手机上设置“小小科技半透明”主题背景,效果美翻天!...
  9. 《孙子兵法》帮你找到合格的管理者
  10. 基于小鼠的基因集数据库资源(人鼠基因集比较)
  11. 【直播回顾】战码先锋首期8节直播完美落幕,下期敬请期待!
  12. 2022-2028全球与中国定时器市场现状及未来发展趋势
  13. Dynamodb 备份策略
  14. 在外远程NAS群晖Drive - 群晖Drive挂载电脑磁盘同步备份【无需公网IP】
  15. Redis + Lua 实现 sorted set 集合保证固定数量的数据,并保留新数据剔除旧数据
  16. react脚手架创建项目报错,ReactDOM.render is no longer supported in React 18.
  17. ping 的错误回应
  18. 免费破解所有型号 IBM 笔记本 BIOS 密码
  19. Ubuntu18.04打开优化设置界面
  20. 创建bbs mysql语句怎么写_MySQL常用语句 | 小灰灰博客

热门文章

  1. 软件工程之“个人附加题”
  2. 成都Uber优步司机奖励政策(4月12日)
  3. Sql字符串操作函数
  4. java 对excel操作 读取、写入、修改数据;导出数据库数据到excel
  5. Eclipse调试Java的10个技巧【转】
  6. javascript各种小技巧
  7. python基础语法 第0关print-温州文成高校邦数据科学通识课【Python基础语法】答案...
  8. python使用方法-python-tkinter使用方法——转载(一)
  9. 用python画梵高星空-python 梵高
  10. python图片识别-Python+Opencv识别两张相似图片