Java反射学习步骤:
1、 什么是反射机制?
2、 获取字节码文件对象(class)
3、 (Consrtuctor)用字节码对象(class) new一个对象
4、 获取和设置字段(Field)对象的值
5、获取指定class的函数(Method)并对其调用
6、反射实例
获取指定class的函数(Method)并对其调用
package reflect.demo;
/*
* 需求:
* 获取指定class的函数并对其调用。
* 步骤:
* 1、创建该对象(Person)。
* 1.1创建该对象的class对象。
* 1.2实例化该对象。
* 2、调用对象的方法。
* 2.1得到Person的class对象的指定方法对象。
* 2.2用方法对象的invoke(Person,+参数)
*
*/
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
publicclass ReflectDemo4 {
publicstaticvoidmain(String[] args) throws Exception {
getMethodDemo_3();
}
public staticvoid getMethodDemo_3() throwsException {
//知识点3、获取一个带参数的一般方法。
Class clazz=Class.forName("been.Person");
Method method=clazz.getMethod("paramMethod",String.class,int.class);
Object obj=clazz.newInstance();
method.invoke(obj, "小强",23);
}
public staticvoid getMethodDemo_2() throwsException {
//知识点2、获取一个空参数一般方法。
Class clazz=Class.forName("been.Person");
Method method=clazz.getMethod("show", null);//获取空参数一般方法。需指定方法名和参数。
// Object obj=clazz.newInstance();
Constructor constructor=clazz.getConstructor(String.class,int.class);
Object obj=constructor.newInstance("小明",34);
method.invoke(obj, null);
}
public staticvoid getMethodDemo() throwsException {
//知识点1、获取指定class中的所有公共函数。
Class clazz=Class.forName("been.Person");
Method[] methods=clazz.getMethods();//获取的都是共有的方法。包含父类的共有方法。
methods=clazz.getDeclaredMethods();//只获取本类的所有方法,包含私有的。
for(Methodmethod:methods) {
System.out.println(method);
}
}
}