Java编程的逻辑 (84) - 反射
上节介绍完了并发,从本节开始,我们来探讨Java中的一些动态特性,包括反射、类加载器、注解和动态代理等。利用这些特性,可以以优雅的方式实现一些灵活和通用的功能,经常用于各种框架、库和系统程序中,比如: 在63节介绍的实用序列化库Jackson,利用反射和注解实现了通用的序列化/反序列化机制 有多种库如Spring MVC, Jersey用于处理Web请求,利用反射和注解,能方便的将用户的请求参数和内容转换为Java对象,将Java对象转变为响应内容 有多种库如Spring, Guice利用这些特性实现了对象管理容器,方便程序员管理对象的生命周期以及其中复杂的依赖关系 应用服务器比如Tomcat利用类加载器实现不同应用之间的隔离、JSP技术也利用类加载器实现修改代码不用重启就能生效的特性 面向方面的编程(AOP - Aspect Oriented Programming)将编程中通用的关注点比如日志记录、安全检查等与业务的主体逻辑相分离,减少冗余代码,提高程序的可维护性,AOP需要依赖上面的这些特性来实现 本节先来看反射机制。 在一般操作数据的时候,我们都是知道并且依赖于数据的类型的,比如: 根据类型使用new创建对象 根据类型定义变量,类型可能是基本类型、类、接口或数组 将特定类型的对象传递给方法 根据类型访问对象的属性,调用对象的方法 编译器也是根据类型,进行代码的检查编译。