反射:框架设计灵魂

  框架:半成品软件,可以在框架基础上进行软件开发,简化编码

  反射:将类的各个组成部分封装我其他对象,这就是反射机制

   好处:

     1.可以在程序运行过程中,操作这些对象

     2.可以解耦,提高程序的可扩展性

获取Class对象的方式:

    1.Class.forName(“全类名”);将字节码文件加载进内存,返回Class对象 (多用于配置文件将类名定义在配置文件中,读取文件加载类)

       2.类名.Class;通过类名的属性.class获取(多用于参数传递)

       3.对象.getClass();getClass()方法在Object类中定义着( 多用于对象的获取字节码的一个方式)

结论:

      同一个字节码文件(*.class)在程序巡行的过程中,只会被加载一次,不论通过那一种方式获取Class对象都是同一个。

Class对象的功能:

获取功能:

   1.获取成员变量们:

     Field[]getFields()  :获取所有public修饰的成员变量

       Field getField(String name) : 获取指定名称的 public修饰的成员变量

      FieId[ ] getDeclaredFieIds()获取所有成员变量,不考虑修饰符

      FileId getDeclaredFieId(String name);

    2.获取构造方法们:

        Constructor<?>[ ] getConstructors()

      Constructor<T> getConstructor(类<?>… parameterTypes)

     Constructor<T> getDeclaredConstructor(类<?>… parameterTypes)

        Constructor<?>[ ] getDeclaredConstructors();

    3.获取成员方法们

         Method[ ] getMethod()

      Method getMethod(String name,类<?>… parameterType)

         Method[ ] getDeclaredMethod()

       Method getDeclaredMethod(String name,类<?>… parameterType)

     4.获取类名

      String getNmae();

       Field:成员变量

       操作:

        1.设置值

        void set(Object obj,Object value);

        2.获取值

         get(Object obj)

        3.忽略访问权限修饰符的安全检查

        setAccessible(true):暴力反射

        Constructor:构造方法

        创建对象:

        newInstance(Object… initargs)

如果使用空参数构造方法创建对象,操作可以简化Class对象的newInstance方法

最新文章

  1. oracle迁移postgres之-Ora2Pg
  2. 三维数组——与 宝玉QQ群讨论交流之二
  3. 25 个增强iOS应用程序性能的提示和技巧 应用程序性能的提示和技巧
  4. java面试常考题
  5. 妙味课堂——HTML+CSS(第一课)
  6. Cummins INSITE locked and ask for verification code
  7. selenium IDE处理各种窗口问题解决方法
  8. JS indexOf() lastIndexOf()与substring()截取字符串的区别
  9. zxing源码分析——QR码部分
  10. Ext JS4百强应用: 用grid.plugin.CellEditing做高级查询 --第10强
  11. HDU 4570(区间dp)
  12. Liunx系统下的进程与线程
  13. 从gitHub上拉取并运行项目
  14. ASP.NET中HttpApplication中ProcessRequest方法中运行的事件顺序;ASP.NET WebForm和MVC总体请求流程图
  15. 解决Javascript中$(window).resize()多次执行
  16. Linux命令1——a
  17. Python笔记(八):web开发
  18. ASP.NET MVC 富文本Ueditor编辑 后台传值前端乱码解决方案
  19. dhcp 提示could not load neutron.agent
  20. Unity3d Http Get请求

热门文章

  1. 使用 Spring Boot Actuator 构建 RESTful Web 应用
  2. never下的easysql
  3. Scala 学习之路(十)—— 函数 &amp; 闭包 &amp; 柯里化
  4. 纯CSS制作加&lt;div&gt;制作动画版哆啦A梦
  5. idea 创建maven项目(一)
  6. vue随笔
  7. 在django中使用vue.js需要注意的地方
  8. mongoshell 执行JavaScript文件获取数据库实例基本信息
  9. 文档管理器 PDFelement Pro v6.8.4.3921 精简绿色版
  10. Redis+Twemproxy分片存储实现