public class MethodInvokeDemo {
public static void main(String[] args) {
//想获取一个类的方法,就是要获取类的信息,就需要先获取这个类的类类型。
A a = new A();
Class c = a.getClass();
/*
* getMethod方法是获取public的方法
* getDeclaredMethods就是获取自己声明的方法,不分权限。
*/
try {
//print是方法名,后面是是参数的类类型,两种方法都可以。
// Method m = c.getMethod("print", new Class[]{int.class,int.class});
Method m = c.getMethod("print", int.class,int.class);
//方法如果没有返回值就返回null,有返回值就返回具体的值。两种方法都可以
Object o = m.invoke(a, new Object[]{20,30});
// m.invoke(a, 20,30);
System.out.println("================");
Method m1 = c.getMethod("print", String.class,String.class);
m1.invoke(a, "hello ","nihao ");
System.out.println("================");
Method m2 = c.getMethod("print");
m2.invoke(a);
} catch (Exception e) {
e.printStackTrace();
}
// c.getDeclaredMethods()
}
}
class A{
public void print(){
System.out.println("hello world");
}
public void print(int a, int b){
System.out.println(a+b);
}
public void print(String a,String b){
System.out.println(a+" "+b);
}
}
以上代码已经很清晰,不再做具体介绍。