簡書 阿貝
轉載請注明原創出處,謝謝!
如果讀完覺得有收獲的話,歡迎點贊加關注
起因
最近工作也差不多確定下來了,打算好好閱讀源碼。于是遇到很久之前就想弄明白的問題——java對可變參數方法是如何實現的。
實現
先看看‘土’辦法是怎么實現。
在調用方法之前我們首先還需要創建一個參數指定類型的局部變量。再傳遞到方法里面。
JDK1.5增加了新特性:可變參數
Class.class
仔細看看parameterTypes的類型其實是Class<?>[]。對,就是一個數組。于是乎,我就開始照樣畫葫蘆。
注意一點:
其實上面也說明白了,這個可變參數必須放在所有參數的后面。
但是,兩個多參數,能不能放在同一個方法里面呢?答案是不可以的,其實我們嘗試的去創建一個這樣的方法的時候,編譯器自動會提示你
The variable argument type int of the method out must be the last parameter顯然我們這樣做是不可以的,同時也就是決定了一個方法只能有一個可變參數并且必須放置在參數列表的最后面。
這樣的設計給我帶來什么樣的便處?
- 減少了參數的數量,看起來更加簡潔。
- 適用于參數類型確定,但是,參數數量不確定的情況。
- 在一定程度上減少重載方法的數量。