package test;
import java.lang.reflect.Method;
class Panda {
public String name;
public int age;
// 公共无参数方法
public void eat() {
System.out.println("I can eat zhuzi");
}
// 静态方法
public static void run() {
System.out.println("I can run slowly");
}
// 私有有参数方法
private void show(String name, int age) {
System.out.println("name : " + name + " age :" + age);
}
}
public class MethodDemo {
public static void main(String[] args) throws Exception {
// 获得Panda类的对象
Class<Panda> clz = Panda.class;
Method m = null;
// 获取eat方法
m = clz.getMethod("eat");
// 用invoke调用eat方法
Object o = m.invoke(clz.newInstance());
System.out.println(o);
// 获取run方法
m = clz.getMethod("run");
// 静态方法可用类直接调用,Obj可为空
Object oo = m.invoke(null);
System.out.println(oo);
// 获取类自己的私有方法
m = clz.getDeclaredMethod("show", String.class, int.class);
// 忽略权限
m.setAccessible(true);
// 用invoke调用私有方法,并根据参数列表设置对应的值
Object ooo = m.invoke(clz.newInstance(), "Nancy", 10);
System.out.println(ooo);
}
}