java反射之Method

来源:互联网 发布:c语言数组赋初值 编辑:程序博客网 时间:2024/05/11 09:25


public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception {          Class ownerClass = owner.getClass();          Class[] argsClass = new Class[args.length];          for (int i = 0, j = args.length; i < j; i++) {           argsClass[i] = args[i].getClass();       }          Method method = ownerClass.getMethod(methodName,argsClass);          return method.invoke(owner, args);  }  





1、Method对象的获取 方法所在类的类对象.getMethod(String methodName,Class[] argsClass);
  获取方法Method对象的参数是方法名和方法的参数类。


2、method.invoke(方法所在类的对象,Object[] args);
执行方法参数:方法所在类的实例对象,和实际参数的Object数组;
如果该方法是静态方法,则方法所在类的对象可以为null






例如:


public class Test {    @Test    public void testMethod() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException {        Class cl=MethodInvoke.class;        Student student=new Student();        student.setName("小李");        Method method=cl.getMethod("doSomething",new Class[]{String.class,student.getClass()});        method.invoke(cl.newInstance(),new Object[]{"hehe",student});    }}class MethodInvoke{    public void doSomething(String a,Student stu){        System.out.println(a+"  stuName:"+stu.getName());    }}




控制台打印结果:

hehe  stuName:小李




0 0
原创粉丝点击