java反射拼接方法名動態執行方法執行個體_java

來源:互聯網
上載者:User

近期由於負責項目的一個模組,該模組下有很多分類,每個分類都有一個編碼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反射拼接方法名動態執行方法執行個體就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援雲棲社區。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.