java反射 执行方法_java反射拼接方法名动态执行方法实例

下面小编就为大家带来一篇java反射拼接方法名动态执行方法实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

近期由于负责项目的一个模块,该模块下有很多分类,每个分类都有一个编码code,这个值是作为一个参数携带过来的。但是每个code确实对应一个方法的。

code的值有很多个,自己又不想做ifelse或者switch判断于是就狂搜资料,主要让我发现利用java的反射机制可以完美的解决这个问题

测试代码如下:(可以携带多个参数哦)

package com.escs.xmlutils;

import java.lang.reflect.Method;

public class Test {

public String ceshi(){

System.out.println("1111111111111");

return "success";

}

public static void main(String[] args) throws Exception {

//里面写自己的类名及路径

Class> c = Class.forName("com.escs.xmlutils.Test");

Object obj = c.newInstance();

//第一个参数写的是方法名,第二个\第三个\...写的是方法参数列表中参数的类型

Method method=c.getMethod("ceshi2", String.class,int.class);

//invoke是执行该方法,并携带参数值

String str2= (String) method.invoke(obj, new Object[]{"myname",4});

System.out.println(str2);

}

public String ceshi(String str){

//for(int j=0;j

System.out.println(str);

//}

return str;

}

public String ceshi2(String str,int i){

for(int j=0;j

System.out.println(str+"22222");

}

return str;

}

}

这样要是动态拼接方法名就更简单了.比如,我的code值有100个,分别为1~100,我code方法分别为ReturnCodeList();这个时候我们把上面的方法抽取出来,返回我们需要的值就行了比如:

public String fanShe(String methodName,String className) throws ClassNotFoundException, SecurityException, NoSuchMethodException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{

//里面写自己的类名及路径

Class> c = Class.forName(className);

Object obj = c.newInstance();

//第一个参数写的是方法名,第二个\第三个\...写的是方法参数列表中参数的类型

Method method=c.getMethod(methodName, String.class,int.class);

//invoke是执行该方法,并携带参数值

String str2= (String) method.invoke(obj, new Object[]{"myname",4});

return str2;

}

当然在实际的需求中还是要根据项目的需要来自己抽取方法的.希望对大家有帮助。

以上这篇java反射拼接方法名动态执行方法实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值