Total Pageviews

2011/06/20

[Java] VarArgs 的應用


Varargs
varargs是JDK 1.5開始才提供的新功能,其定義如下:The varargs, or variable arguments, feature allows a developer to declare that a method can take a variable number of parameters for a given argument. The vararg must be the last argument in the formal argument list.
白話一點來說,varargs就是用來處理輸入參數數量無法預知的情形,以下是一個簡單的範例。
Scenario
為了因應客戶需求,將前端的刪除功能從單筆變成多筆,此時要從前端傳多筆資料的primary key給controller來進行資料刪除。

Class Diagram
由於多筆刪除是統一的作法,且每一個Controller都會繼承Abstract Controller,於是就把getPKList定義於AbstractController中,這樣每個controller都可以直接取用,如下圖:



Sequence Diagram
從Sequence diagram可以看出,當使用者選擇某幾筆資料,然後按下刪除按鈕,Controller會呼叫getPKList來取得從前端回傳回來的primary key,當接收到以後,再呼叫doDelete來刪除資料。


Sample Code
從以下的code snippet可以看出,getPKList有帶兩個參數,第二個參數就是varargs,由於每張table擁有的primary key的數量不一,有可能一個或一個以上,如NIGT036只有一個primary key, NIGT001則有四個
NIGT036

NIGT001



透過varargs,就可以一個method 滿足所有controller 的需求
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
   /** 
   * Get primary key list 
   * 
   * @param delArray delete array 
   * @param keys primary keys 
   * @return List of String 
   */ 
   public List getPKList(final String delArray, final String...keys) { 
       List arr = JSONArray.fromObject(delArray); 
       List pkList = new ArrayList(); 
       for (Map map : arr) { 
           //若有多個keys,就add多個primary key到pkLisk;若只有一個primary key,則只做一次 
           for(String str : keys){ 
               pkList.add(map.get(str)); 
           } 
       } 
       return pkList; 
   } 

No comments: