java反射拼接方法名動態(tài)執(zhí)行方法實例
近期由于負責項目的一個模塊,該模塊下有很多分類,每個分類都有一個編碼code,這個值是作為一個參數(shù)攜帶過來的。但是每個code確實對應(yīng)一個方法的。
code的值有很多個,自己又不想做ifelse或者switch判斷于是就狂搜資料,主要讓我發(fā)現(xiàn)利用java的反射機制可以完美的解決這個問題
測試代碼如下:(可以攜帶多個參數(shù)哦)
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();
//第一個參數(shù)寫的是方法名,第二個\第三個\...寫的是方法參數(shù)列表中參數(shù)的類型
Method method=c.getMethod("ceshi2", String.class,int.class);
//invoke是執(zhí)行該方法,并攜帶參數(shù)值
String str2= (String) method.invoke(obj, new Object[]{"myname",4});
System.out.println(str2);
}
public String ceshi(String str){
//for(int j=0;j<Integer.valueOf(i);j++){
System.out.println(str);
//}
return str;
}
public String ceshi2(String str,int i){
for(int j=0;j<i;j++){
System.out.println(str+"22222");
}
return str;
}
}
這樣要是動態(tài)拼接方法名就更簡單了.比如,我的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();
//第一個參數(shù)寫的是方法名,第二個\第三個\...寫的是方法參數(shù)列表中參數(shù)的類型
Method method=c.getMethod(methodName, String.class,int.class);
//invoke是執(zhí)行該方法,并攜帶參數(shù)值
String str2= (String) method.invoke(obj, new Object[]{"myname",4});
return str2;
}
當然在實際的需求中還是要根據(jù)項目的需要來自己抽取方法的.希望對大家有幫助。
以上這篇java反射拼接方法名動態(tài)執(zhí)行方法實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Cloud學習教程之Zuul統(tǒng)一異常處理與回退
Spring Cloud Zuul對異常的處理整體來說還是比較方便的,流程也比較清晰,下面這篇文章主要給大家介紹了關(guān)于Spring Cloud學習教程之Zuul統(tǒng)一異常處理與回退的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。2018-04-04
SpringBoot2 參數(shù)管理實踐之入?yún)⒊鰠⑴c校驗的方式
這篇文章主要介紹了SpringBoot2 參數(shù)管理實踐,入?yún)⒊鰠⑴c校驗,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-06-06
Spring Data JPA結(jié)合Mybatis進行分頁查詢的實現(xiàn)
本文主要介紹了Spring Data JPA結(jié)合Mybatis進行分頁查詢的實現(xiàn)2024-03-03

