反射

反射:框架设计的灵魂

  • 框架:半成品软件。可以在框架的基础上进行软件开发,简化编码。
  • 反射:将类的各个组成部分封装为其他对象,这就是反射机制。
    • 好处:
      • 可以在程序运行过程中,操作这些对象。
      • 可以解耦,提高程序的可扩展性。
  • 获取Class对象的方式:
    1. class.forName("全类名"):将字节码文件加载进内存,返回class对象
      1. 多用于配置文件,将类名定义在卑职文件中、读取文件,加载类。
    2. 类名.class:通过类名的属性来class获取
      1. 多用于参数的传递
    3. 对象.getClass():getClass()方法在Object类中定义着。
      1. 多用于对象的获取字节码的方式
  • 结论:
    • 同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,不论通过哪一种方式获取的class对象都是同一个。

获取字节码Class对象的三种方式

  • Class对象功能:
    • 获取功能:
      • 获取成员变量:
        • Field[] getFileds()
        • Field getField(String name)
        • Field[] getDeclareFields()
        • Field getDeclareField(String name)
      • 获取构造方法:
        • Constructor<?>[] getConstructors()
        • Constructor getConstructor(类<?>...parameterTypes)
        • Constructor getDeclaredConstructor(类<?>...parameterTypes)
        • Constructor<?>[] getDeclaredConstructors()
      • 获取成员方法:
        • Method[] getMethods()
        • Method getMethod(String name,类<?>...parameterTypes)
        • Method[] getDeclareMethods()
        • Method getDeclareMethod(String name,类<?>... parameterTypes)
      • 获取类名
        • String getName()
posted @ 2020-11-24 23:44  小明-o3rr0r  阅读(41)  评论(0编辑  收藏  举报