一 反射
反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的方法和属性;这种动态获取信息以及调用对象方法的功能称为Java语言的反射机制。
哪里用到了反射:
- JDBC中,利用反射动态加载了数据库驱动程序
- web服务器中利用反射调用了servlet的服务方法
- idea等开发工具利用反射动态刨析对象的类型与结构
- 很多框架都用到反射机制,注入属性,调用方法,比如spring
反射机制的优缺点:
优点:可以动态执行,在运行期间根据业务功能动态执行方法,访问属性,最大限度发挥了Java的灵活性
缺点:对性能有影响,这类操作总是慢于直接执行Java代码
动态代理是什么?有哪些应用?
动态代理是运行时动态生成的代理类
动态代理的应用有spring AOP 数据查询,测试框架的后端mock。rpc,java注解对象获取等
怎样实现动态代理?
JDK原生动态代理和cglib动态代理
JDK原生动态代理是基于接口实现的,而cglib是基于继承当前类的子类实现的
Java反射机制的作用:
运行时判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判断任意一个类所具有的成员变量和方法
在运行时调用任意一个对象的方法
如何使用Java反射机制
1 通过一个全限定名创建一个对象