java反射机制demo

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

猜你喜欢

转载自blog.csdn.net/kouwoo/article/details/50956607
今日推荐