package ccc; public class H { public String say() { String r= "hello"; System.out.println(r); return r; } public String say(String name) { String r= "hello," + name; System.out.println(r); return r; } public String say(String name, String p) { String r = "hello," + p + name; return say(r); } public String say(String name, String p, Integer k) { String r = "hello," + p + name + " " + k + " times"; return say(r); } } package ccc; import java.lang.reflect.Method; import java.util.ArrayList; public class Invoke { public static void main(String[] args) { Invoke in = new Invoke(); String pkg = "ccc.H"; String mName = "say"; ArrayList<Object> objs1 = new ArrayList<Object>(); objs1.add("zz"); System.out.println("fromInvoke = " + in.invoke(pkg, mName, objs1)); objs1.add("mr."); System.out.println("fromInvoke = " + in.invoke(pkg, mName, objs1)); objs1.add(2); System.out.println("fromInvoke = " + in.invoke(pkg, mName, objs1)); objs1.clear(); System.out.println("fromInvoke = " + in.invoke(pkg, mName, objs1)); } public Object invoke(String className, String methodName, ArrayList<Object> params) { try { Class c = Class.forName(className); ArrayList<Class> cls_ar = new ArrayList<Class>(); for (Object object : params) { cls_ar.add(object.getClass()); } Class[] cls = new Class[] {}; Method m = c.getMethod(methodName, cls_ar.toArray(cls)); return m.invoke(c.newInstance(), params.toArray()); } catch (Exception e) { e.printStackTrace(); return null; } } } 注:say的所有参数必须为对象类,不能为int等基本类