1.
package com.test.jms;
public class InflectBean {
public void p(String msg) {
System.out.println(msg);
}
public void p2(String msg1, String msg2) {
System.out.println(msg1 + ":" + msg2);
}
}
2.
<pre name="code" class="java">package com.test.jms;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class InflectTest {
/**
* @param args
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws Exception {
//通过类装载器获取InflectBean类对象
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class clazz = loader.loadClass("com.test.jms.InflectBean");
//获取类的默认构造器对象并通过它实例化InflectBean
Constructor cons = clazz.getDeclaredConstructor((Class[]) null);
InflectBean mInflectBean = (InflectBean) cons.newInstance();
//可以直接调用方法
mInflectBean.p("111");
//通过反射调用方法
//第一个参数是目标Class的方法名;第二个参数是方法入参的对象类型
Method method_pMethod = clazz.getMethod("p", String.class);
//第一个参数是操作的目标类对象实例;第二个参数是目标方法的入参。
method_pMethod.invoke(mInflectBean, "222");
//通过反射调用方法
Method method_p2Method = clazz.getMethod("p2", String.class,
String.class);
method_p2Method.invoke(mInflectBean, "333", "444");
}
}
3.打印结果
111
222
333:444