1,什么是反射
Java的反射机制是在运行状态中,对于任意一个类,都能够得到这个类的所有属性和方法;对于任意一个对象,都能够调用他的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能成为Java的反射机制。
2,反射实现的步骤
(1)首先得到class这个类(三种方法)
a,使用class类的forName()方法
b,使用对象的getClass()方法
c,使用.class语法
(2)获取class对象(两种方法)
a,通过无参构造器新建实例
A a=new A();
Class c=a.getClass();
Constructor constructor=c.getConstructor();
Object o=constructor.newInstance();
b,通过类类型新建类的实例
A a=new A();
Class c=a.getClass();
Object o= c.newInstance();
(3)得到方法和属性(在没有生成调用之前)
a,首先得到类类型
b,得到class类的对象
c,通过class这个类得到Method
d,得到这个方法的实例之后,调用方法的Invoke()方法
Class c=A.class;
Object o=c.newInstance();
Method method=c.getMethod("print",int.class,int.class);
method.invoke(o,new Integer[]{1,2});
3,反射的使用
Spring 中的 IOC 的底层实现原理就是反射机制,Spring 的容器会帮我们创建实例,该容器中使用的方法就是反射,通过解析xml文件,获取到id属性和class属性里面的内容,利用反射原理创建配置文件里类的实例对象,存入到Spring的bean容器中。