简单反射调用方法

import java.lang.reflect.Method;

public class DynamicLoading {
	 public static void main(String[] args) throws Exception {
		 String s = "A";
		 //加载类文件
		 Class c = Class.forName(s);
		 //创建对象
		 Object obj = c.newInstance();
		 //获得方法数组
		 Method[] methods = c.getMethods();
		 for(Method m:methods){
			 if(m.getName().equals("mm")){
				Class[] sarrary = new Class[]{int.class,String.class};
				//获得方法
				Method m2 = c.getDeclaredMethod("mm",sarrary); 
				//调用方法
				m2.invoke(obj,1,"lkjlkj");
				m.invoke(obj,1,"lkjlkj");
				//获得参数类型
				for(Class paraType:m.getParameterTypes()){
					System.out.println(paraType.getName()+"----------para");
				}
				//获得返回值类型
				Class  returnType = m.getReturnType();
				System.out.println(returnType.getName()+"------------returnType");
			 }
		 }
		 
		 Method TT = c.getDeclaredMethod("TT"); 
		 TT.invoke(obj);
	}
}

class A {
	public void mm(int i,String s){
		System.out.println("------mm invoked-----"+i+"===="+"======"+s);
	}
	public void TT(){
		System.out.println("-----TT invoked");
	}
}

猜你喜欢

转载自javafu.iteye.com/blog/1956162
今日推荐