2013-05-04 36 views
1

我想有一個抽象的功能,諸如傳遞數組作爲參數BUT單獨

init(int... conditions); 

使繼承類可以具有各種初始化條件;可能有些課程需要更少的教誨,而其他課程可能需要更多的課程。

不過,我想,而通過他們單獨像下面

init(arr[0], arr[1], arr[2]... arr[size-1]); 

init(arr); 

就是這樣的做法可能嗎?如果不是,那麼我應該更好地傳遞一個數組嗎?


對不起,我似乎創造了混亂。

我有一個大小不等的數組。 我不能硬編碼傳遞參數,因爲參數的數量是可靠的。 我不想爲不同版本的init方法重載函數,因爲這會創建大約十幾個不同版本的init方法。

+0

你爲什麼要單獨傳遞它們?可變參數的實現是爲了讓它不會那麼做。 – syb0rg 2013-05-04 00:32:46

+0

對於任意大小不可能做任何事情 - 只能調用一個有限的調用變量集合,但是'n' [相對]是無界的。創建適當的數組(例如添加或移除元素)和va-args('...')將自動接受它。 – user2246674 2013-05-04 00:35:02

+0

我看到謝謝你的幫助。 :d! – BlueBug 2013-05-04 00:36:38

回答

2

您不需要重載該方法。只需使用所謂的variable arguments。 Java自1.5版開始提供。例如:

public void init(int... conditions) { ... } 

您可以通過兩種方式使用方法:

  1. 傳遞數組本身。像這樣:

    init(array);

  2. 傳遞每個數組元素。像這樣:

    init(array [0],array [1],... array [n]);

請注意,如果您希望爲此方法提供其他參數,則只能在變量參數前面放置方法簽名。

1

您始終可以使用可變參數方法參數。事實上,它與上面發佈的方法簽名相同。

public void init(int... conditions){} 

這使得條件是一個int [],您可以迭代以獲取您的init條件。