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:
Post a Comment