反射机制主要提供以下功能:
在运行时构造一个类的对象
判断一个类所具有的成员变量和方法
调用一个对象的方法
生成动态代理
反射最大应用是框架
java的反射的主要功能:
确定一个对象的类
取出类的访问权限修饰符、数据成员、方法、构造器和超类
找出某个接口里定义的常量和方法说明
创建一个类的实例,这个实例在运行时才生成对象
取得和设定对象数据成员的值、如果数据成员是运行时确定的也能做到
在运行时刻调用动态对象的方法
创建数组,数组大小和类型在运行时刻才确定,也能更改数组成员的值
Class类是反射的基础,
Class类表示正在运行的java应用程序中的类和接口,
Class只有私有的构造函数。
Class类在加载类时由java虚拟机以及调用类加载中的define方法自动创建的
只有内存中存在一份加载类的class类
三种方法得到某个java类的Class类
- Class cls1 = s.getClass();
- Class cls2 = String.class;
- Class cls3 = Class.forName("java.lang.String");
反射的应用很多,很多框架都有用到
spring 的 ioc/di 也是反射....
javaBean和jsp之间调用也是反射....
struts的 FormBean 和页面之间...也是通过反射调用....
JDBC 的 classForName()也是反射.....
hibernate的 find(Class clazz) 也是反射....