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<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;
}
}
如許如果靜態拼接辦法名就更簡略了.好比,我的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反射拼接辦法名靜態履行辦法實例就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。