一、定义
Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制
二、作用
与Java虚拟机相反的功能,即为(反编译)。class——》java
通过反射机制访问Java对象的属性,方法,构造方法等
三、反射常用API
1.获取类对象:java.lang.class (一般而言有三种方法)
2.获取类对象的构造方法:java.lang.reflext.Constructor(目的是为了创建新的对象(有参的))
3. 获取类对象的属性:java.lang.reflect.Field(这里我们可以通过类型来展示所有属性再一一进行命名)
4.获取类对象的方法:java.lang.reflect.Method(获取方式与属性类似)
5.java.lang.reflect.Modifer(一般不用)
四、利用反射创建类的对象
首先创建一个类
public class User{
private Integer id;
private String name;
...(省略getter,setter和构造方法的创建)
public void run(){
...(省略方法体的创建)
}
}
创建类的对象的三种方法
1.通过jdk中自带的方法forName()
Class ez1=Class.forName("cn.kgc.com.User");
2.第二种方法通过所有类自带的属性创建对象
Class ez2=User.class;
3.第三种,通过该类创建的对象(每个对象都有的getClass()方法)来进行反编译
User user=new User();
Class ez3=user.getClass();
五、通过反编译获得的类来创建对象(即承接上一步的继续步骤)
利用反射创建类的对象,(编译而来的类中有无参构造方法的时候)可调用newInstance()方法来创建新的对象。
Class c=Class.forName("cn.kgc.com.User");
Object o=c.newInstandce();