java中利用反射机制实现调用给定为字符串的方法名

1、被测试类

package demo.reflect;

/**
 * 被测试类
 * @author wangyanjun
 *
 */
public class Quizzee {
 public void testMethod(String arg1,Integer arg2){
  System.out.println("测试结果:反射方法的调用");
  System.out.println(arg1+"   "+arg2);
  System.out.println("测试成功!");
 }
}

2、测试

package demo.reflect;

import java.lang.reflect.Method;
/**
 * 功能:调用给定为字符串的方法名
 * @author wangyanjun
 *
 */
public class Test {

 /**
  * @param args
  */
 public static void main(String[] args) {
  try {
   //返回给定字符串名的类 Class 对象
   //并创建此 Class 对象所表示的类的一个新实例
   Object object = Class.forName("demo.reflect.Quizzee").newInstance();
   //返回方法名为“testMethod”的一个 Method 对象,后面跟的是该方法参数
   Method method = object.getClass().getMethod("testMethod",
     new Class[] { String.class, Integer.class });
   //执行该方法
   method.invoke(object, new Object[]{new String("数据1"),520});
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}


3. invoke class 内 static 方法

//统一方法调用
public static String methodInvoke(String methodName,String arg1,String arg2,String arg3){
Class<?> cls = DomainCrossInfo.class;
Method[] methods = cls.getDeclaredMethods();  
String methodsName = "";
String result = "error";
for (Method method : methods) { 
methodsName += method.getName() +",";
}
if(methodsName.indexOf(methodName)>=0){
  //返回方法名为“testMethod”的一个 Method 对象,后面跟的是该方法参数
  Method method;
try {
method = cls.getMethod(methodName,new Class[] { String.class, String.class,String.class });
result = (String) method.invoke(null, new Object[]{arg1,arg2,arg3});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();

  
}else{
return result;
}
 
return result;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值