反射机制

  1. 获取Class对象的四种方式

    1. 知道具体类名

      1. Class targetClass = 类名.class;
    2. 遍历某一个包下的路径(默认会创建实例)

      1. Class targetClass = Class.forName("java.anrolsp.xxx");
    3. 创建对象实例时反射

      1. Employee e = new Employee();
      2. Class targetClass = e.getClass();
      1. class targetClass = ClassLoader.LoadClass("cn.javaguide.TargetObject");

      反射类的实例化

      1. Class targetClass = Class.forName("java.anrolsp.TargetObject");
      2. TargetObject object = (TargetObject) targetClass.newInstance();
  2. 静态编译和动态编译

    1. 编译时确定类型,绑定对象
    2. 运行时确定类型,绑定对象
  3. 应用场景
    1. 使用JDBC连接数据库时使用Class.forName()通过反射加载数据库驱动程序
    2. Spring 框架的 IOC(动态加载管理 Bean)创建对象以及 AOP(动态代理)功能都和反射有联系;
    3. 动态配置实例的属性;