Thinking in java 之:可變參數列表

有了可變參數,就再也不用顯示地編寫數組語法了,當你指定參數時,編譯器實際上會自動爲你去填充數組,你獲取的仍是一個數組,這就是爲什麼print()可以使用foreach來迭代該數組的原因,但是,當你傳遞的參數已經是一個數組的時候,編譯器發現你已經是一個數組了,便不會爲你做任何的轉換操作,所以,如果你有一組事物,可以把它們當做列表傳遞,而如果你已經有了一個數組,該方法可以把它們當做可變參數列表來接受。

實例:

public class OverrideVarargs {
	public void ArrayTest(Object... args) {
		for (Object o : args)
			System.out.print(" " + o.toString());
		System.out.println();
	}

	public static void main(String[] args) {
		OverrideVarargs overargs = new OverrideVarargs();
		// 如果已經是一個數組,編譯器不會在其上執行任何轉換操作,這裏強制轉換成Object型數組是爲了移除編譯器警告信息
		overargs.ArrayTest((Object[]) new Integer[] { 7, 8, 9, });
		// 編譯器自動會去填充數組
		overargs.ArrayTest(1, 2, 3, 4);
		overargs.ArrayTest("11", "22", "33", "44");
		overargs.ArrayTest();
	}
}

打印結果:

 7 8 9
 1 2 3 4
 11 22 33 44

從打印結果看出,將0個參數傳遞給可變參數列表是可行的,如果可變參數列表中沒有任何元素,那麼轉變成數組的尺寸爲0。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章