try { //得到类对象 Class c = Class.forName("完整类名"); Object yourObj = c.newInstance(); //得到方法 Method methlist[] = cls.getDeclaredMethods(); for (int i = 0; i < methlist.length; i++) { Method m = methlist[i]; } //获取到方法对象,假设方法的参数是一个int,method名为setAge Method sAge = c.getMethod("setAge", new Class[] {int.class}); //获得参数Object Object[] arguments = new Object[] { new Integer(37)}; //执行方法 sAge.invoke(yourObj , arguments); } catch (Exception e) { }
getDeclaredMethod*()获取的是类自身声明的所有方法,包含public、protected和private方法。
getMethod*()获取的是类的所有共有方法,这就包括自身的所有public方法,和从基类继承的、从接口实现的所有public方法。
测试例子
package com.sf.test;
import java.lang.reflect.Method;
public class RefTest {
public static void main(String args[]) throws Exception { Class clazz = Class.forName("com.sf.test.Test"); Object object = clazz.newInstance(); Method refTest = clazz.getDeclaredMethod("refTest"); Method refTest1 = clazz.getDeclaredMethod("refTest1",String.class); refTest1.invoke(object, "0021212"); refTest.invoke(object); } }
package com.sf.test;
public class Test { public Test(){ } public void refTest() { System.out.println("00000000"); } public void refTest1(String string) { System.out.println(string); } }