ITEEDU

用反射根据方法的名称来执行方法

获取指定方法要指定两部分内容:

  1. 方法名
  2. 方法所需参数

因为java中有重载一说,同名方法只要参数 相异是可以共存的,所以确定一个方法时方法参数也是必不可少的。

执行方法要有一个对象实体,一般我们都是执行某个对象的某个方法,所以一般格式如下:

方法名.invoke(对象实体,参数列表)

 

import java.lang.reflect.*;
public class method2 {
    public int add(int a, int b) {return a + b;}
    public static void main(String args[]) {
        try {
            Class cls = Class.forName("method2");
            Class partypes[] = new Class[2];
            partypes[0] = Integer.TYPE;
            partypes[1] = Integer.TYPE;
            Method meth = cls.getMethod("add", partypes);
            method2 methobj = new method2();
            Object arglist[] = new Object[2];
            arglist[0] = new Integer(37);
            arglist[1] = new Integer(47);
            Object retobj = meth.invoke(methobj, arglist);
            Integer retval = (Integer) retobj;
            System.out.println(retval.intValue());
        } catch (Throwable e) {System.err.println(e);}
    }
}