多平台统一管理软件接口,如何实现多平台统一管理软件接口
263
2023-07-10
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[]{"mynamejgRGpbEjwj",4}); return str2; } 当然在实际的需求中还是要根据项目的需要来自己抽取方法的.希望对大家有帮助。
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[]{"mynamejgRGpbEjwj",4});
return str2;
}
当然在实际的需求中还是要根据项目的需要来自己抽取方法的.希望对大家有帮助。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~