package cn.itcast_04;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
/*
* 需求:通过反射获取成员方法
*/
public class ReflectDemo {
public static void main(String[] args) throws Exception {
// 获取字节码文件对象
Class c = Class.forName("cn.itcast_01.Person");
// 获取所有的方法
// Method[] methods = c.getMethods();//获取自已的包括父亲的公共方法
// Method[] methods = c.getDeclaredMethods();// 获取自已的所有方法
// for (Method method : methods) {
// System.out.println(method);
// }
// 获取无参构造方法并创建对象
Constructor con = c.getConstructor();
Object obj = con.newInstance();
/*
* Person p = new Person(); p.show();
*/
// 获取单个方法并使用
// public void show()
// public Method getDeclaredMethod(String
// name,Class<?>...parameterTypes)
// 第一个参数表示的方法名,第二个参数表示的是方法的参数的class类型
Method m1 = c.getDeclaredMethod("show");
// obj.m1()//错误
// public Object invoke(Object obj, Object... args)
// 返回值是Object接收,第一个参数表示对象是谁,第二个参数表示调用该方法的实际参数
m1.invoke(obj);// 调用obj方法m1方法
}
}
还没有评论,来说两句吧...