反射机制
获取Class对象的四种方式
知道具体类名
Class targetClass = 类名.class;
遍历某一个包下的路径(默认会创建实例)
Class targetClass = Class.forName("java.anrolsp.xxx");
创建对象实例时反射
Employee e = new Employee();
Class targetClass = e.getClass();
class targetClass = ClassLoader.LoadClass("cn.javaguide.TargetObject");
反射类的实例化
Class targetClass = Class.forName("java.anrolsp.TargetObject");
TargetObject object = (TargetObject) targetClass.newInstance();
静态编译和动态编译
- 编译时确定类型,绑定对象
- 运行时确定类型,绑定对象
- 应用场景
- 使用JDBC连接数据库时使用Class.forName()通过反射加载数据库驱动程序
- Spring 框架的 IOC(动态加载管理 Bean)创建对象以及 AOP(动态代理)功能都和反射有联系;
- 动态配置实例的属性;