我们在类中调用方法的时候,一般都是,先实例化一个具体的对象,然后用这个对象来调用具体的函数方法,而我们说的利用反射来调用方法,是用函数方法对象来调用具体的对象。
1、getMethod(“方法名”,参数类型的类类型)
我们要获得一个方法的话,首先要获得一个类的类类型,之后再用类类型来getMethod方法来获得具体的方法,这个方法的返回值是一个Method对象。
2、invoke方法
该方法由Method对象来调用,具体格式:method.invoke(a1,方法参数);
3、 具体代码实现
package com.imooc.reflect;
import java.lang.reflect.Method;
public class MethodDemo1 {
public static void main(String[] args) {
A a1 = new A();
Class c = a1.getClass();
try {
Method m = c.getMethod("print", int.class,int.class);
Object o = m.invoke(a1, 10,20);
System.out.println("==================");
Method m1 = c.getMethod("print",String.class,String.class);
o = m1.invoke(a1, "hello","WORLD");
System.out.println("===================");
Method m2 = c.getMethod("print");
m2.invoke(a1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class A{
public void print(){
System.out.println("helloworld");
}
public void print(int a,int b){
System.out.println(a+b);
}
public void print(String a,String b){
System.out.println(a.toUpperCase()+","+b.toLowerCase());
}
}