1. 程式人生 > >Java變長變量(類似ES6的剩余參數)應用例子

Java變長變量(類似ES6的剩余參數)應用例子

arrays類 list jdk1 t對象 玩意兒 java ava 工具 lis

今天看代碼的時候,看到一處如下:

技術分享圖片

第三個參數提示:...properties的寫法有點類似之前看過的ES6語法的剩余參數,不知道java也有這玩意兒。搜了下,是jdk1.5的新特性:變長變量。有點孤陋!

百度知道解釋:

  其實這種定義就類似一個數據的定義,可以不用給它的長度加以限制,可以傳入任意多個參數。
比用數據更靈活一些,不會出現一些數組越界等的異常。
如:
getType(String ...values);
調用時,可以getType("a","b","c")等,參數個數沒有限制,類型是前面規定的String類型。

繼續看代碼的調用,首先是跟蹤Sort()對像的構造器。Sort()是org.springframework.data.domain包下的一個類,

技術分享圖片

實現了兩個接口,Sort.Order應該就是Sort類裏的一個靜態內部類了。不扯了,直接看關鍵位置的構造器:

技術分享圖片

發現剩余參數變量(變長變量)傳進來,主要用於構造ArrayList動態數組對象。搜了下數組工具類asList()的用法,將一個數組轉化為一個List對象,

這個方法會返回一個ArrayList類型的對象, 這個ArrayList類並非java.util.ArrayList類,而是Arrays類的靜態內部類!用這個對象對列表進行添加刪除更新操作,

就會報UnsupportedOperationException異常。

技術分享圖片

總結就是,變成變量應該主要用來轉為數組對象吧。

Java變長變量(類似ES6的剩余參數)應用例子