Java 的反射对于我来说曾经算是一个比较高级的观概念,以前一直不太敢用的原因是不太会用,直到我遇到了一个需要解析XML报文的需求,需要运行时动态加载某一部分类的对象属性时,我才开始认真的研究反射的用法。其实很多程序知识都是这样,纸上得来终觉浅。




java 反射转换参数类型 java反射强制转换_动态加载


  • 反射是一种在程序运行时可以自我动态识别的一种的一种技术。
  • Spring 中有很多地方应用了反射,有时也会包装成为--动态规划。
  • 私有类中属性想要被其他类调用,必须要用到set() 方法,但是Spring 中获取某一个类的Service 时,并没有这么做就可以直接通过注解,直接访问其private属性,其实这就是依赖注入,其底层就是用反射实现的,通过调用setAccessible 来设置访问权限。


java 反射转换参数类型 java反射强制转换_java反射技术强制类型转换_02


  • 如果业务代码中应用了反射,一般就是程序在编译期之前无法对属性进行操作,需要在运行时动态处理一些业务逻辑。
  • Mybatis 使我们业务中常见应用框架,其中我们的Mapper.xml 中SQL 执行出来的结果,最终体现在对象中返回的过程,就是用到了反射。其根查到的列名,构造一个对象,并调用该对象的set()方法,将查到的值放进去。
  • 所有需要在程序运行过程中动态加载的类或者方法一般都是用的反射,想想你们公司的动态配置项目,基本都是通过反射做的配置分离。
  • Web项目中 DispatcherServlet 与 Filter的创建,就是在web.xml中配置并在服务器启动后动态创建。
  • 反射机制的作用其实就是获取类的相关信息,动态调用类方法 ,动态构造你想要的对象,从一个容器中获得自己想要的类型(往往需要强制类型转换)。


java 反射转换参数类型 java反射强制转换_xml_03