Java反射学习步骤:
1、 什么是反射机制?
2、 获取字节码文件对象(class)
3、 (Consrtuctor)用字节码对象(class) new一个对象
4、 获取和设置字段(Field)对象的值
5、获取指定class的函数(Method)并对其调用
6、反射实例
用字节码对象class new一个对象
package reflect.demo;
/*
* 需求:
* 1、用字节码对象class new一个对象。
* 2、用字节码对象class new一个带参数的对象。
*
* 第2个需求步骤:
* 2.1创建字节码对象
* 2.2创建构造函数对象。
* 2.3对构造函数对象进行实例化与设置其参数。
*/
import java.lang.reflect.Constructor;
publicclass ReflectDemo2 {
publicstaticvoidmain(String[] args) throws Exception {
createNewObject_2();
}
public staticvoidcreateNewObject_2() throws Exception {
// been.Person p=new been.Person();
/*
* 当获取指定名称对应类中的所体现的对象时,
* 而该对象初始化不使用空参数构造,该怎么办?
*
* 既然是通过指定的构造函数进行对象的初始化,
* 所以应该先获取该构造函数。通过字节码文件对象即可完成。
* 该方法是:class.getContructor(paramterTytes);
*
*/
String name="been.Person";
//找寻该名称类文件,并加载进内存,并产生Class对象。
Class clazz=Class.forName(name);
//获取到指定的构造函数对象。
Constructor constructor=clazz.getConstructor(String.class,int.class);
//通过构造函数对象的newInstanc方法进行对象的初始化。
Object obj=constructor.newInstance("小明",38);
}
publicstaticvoid createNewObject() throwsClassNotFoundException, InstantiationException, IllegalAccessException {
//早期:new时候,先根据被new的类的名称找寻该类的字节码文件,并加载进内存,
//并创建该字节码文件对象,并接着创建该字节码文件对应的Person类。
//been.Personp=new been.Person();
//现在:
String name="been.Person";
//找寻该名称类文件,并加载进内存,并产生Class对象。
Class clazz=Class.forName(name);
//如何产生该类的对象呢?
Object obj=clazz.newInstance();
}
}