避免使用if-else_代碼提升

來源:互聯網
上載者:User

(轉載)http://blog.vsharing.com/wpskl/A990596.html

最近在研究一下怎樣盡量少使用if-else,考慮到自己的使用方式,就想到了使用java中反射機制,可以達到自己的要求,更趨於OO設計。
怎樣使用java中的反射機制:
 1.首Crowdsourced Security Testing道傳給你的對象有幾種出現的情況,比如傳給我的對象有3種情況,每種情況分別調用不同的方法(methodA,methodB,methodC)。
 2.在平時的代碼中一般會這樣寫,if(A)methodA if(B)methodB等等。這時候改用map來實作類別反射,把這三個方法名放入map中,map的key就是if中的條件。
 3.準備好map之後,這時候來的情況不用判斷,直接用map去取出對應得方法名,通過類反射調用,通過測試ok。
 4.這個方法只是適合本人現在的情況,根據實際情況進行修改。
 以上內容僅供參考,希望給出寶貴意見和建議。
 測試代碼如下:

import java.util.HashMap;import java.util.Map;/** *  * @author wpskl *  */public class MapInvoke {public void wpskl1(String ss) {System.out.println("========wpskl1=====" + ss);}public void wpskl2(String ss) {System.out.println("========wpskl2=====" + ss);}public void wpskl3(String ss) {System.out.println("========wpskl3=====" + ss);}public void test() {Map<String, String> map = new HashMap<String, String>();map.put("1", "wpskl1");map.put("2", "wpskl2");map.put("3", "wpskl3");MapInvoke mapInvoke = new MapInvoke();for (int i = 1; i < 4; i++) {String method = map.get(i + "");String param = "zhdd" + i;try {invoke(mapInvoke, method, param);} catch (Exception e) {e.printStackTrace();}}}private void invoke(Object o, String method, String param) throws Exception {o.getClass().getMethod(method, new Class[] { String.class }).invoke(o, new Object[] { param });}public static void main(String[] args) {MapInvoke mapInvoke = new MapInvoke();mapInvoke.test();}}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.