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);
}
}