2012-08-13 50 views
3

可能重複:
Can I pass an array as arguments to a method with variable arguments in Java?
What is … in a method signature「...」在Java中使用?

我第一次看到這個的時候我被改裝我的世界。它有一個指定的構造函數(String ... line),並且認爲它只是Mojang創建的簡寫。但現在,我正在查看ProcessBuider,並看到它again。我想知道這是用來做什麼的。我最好的猜測是,它允許開發人員根據需要添加儘可能多的對象類型。但是,如果是這種情況,爲什麼不使用數組或列表?

所以,真的,我問兩個問題:

  1. 什麼是「...」操作,並
  2. 爲什麼它比使用數組或列表更有用?
+0

它被稱爲可變參數。以下是更多信息:http://stackoverflow.com/questions/766559/when-do-you-use-varargs-in-java – 2012-08-13 22:55:42

+0

它被稱爲「可變參數」。在那裏,你剛剛得到一個新的搜索關鍵字:) – BalusC 2012-08-13 22:55:46

+1

對不起可能的愚蠢,我不知道它被稱爲。 – mattbdean 2012-08-13 22:57:16

回答

2

...指示可變參數函數的多參數列表:一個函數,可以採用可變數量的參數。

關於這方面的一個例子,請看PrintStream.format。第一個(必需)參數的格式爲String,其餘的0個或更多參數滿足該格式。

+0

好的答案!非常詳細,簡潔,並給出了一個例子。 +1 – mattbdean 2012-08-13 23:07:03

1

這相當於一個String[] line。 Java相當於C/C++中的varargs關鍵字。與C/C++類似,它必須作爲最後一個參數出現。

+0

我不知道:)謝謝! – mattbdean 2012-08-13 23:01:01

2

它被稱爲varargs,正如你所說的那樣,它被用來讓一個方法被任意數量的指定類型的參數調用。它是在Java 5中引入的。
您可以在Java tutorials - Varargs中閱讀更多內容。

+0

這真的很有用!感謝您的鏈接。 – mattbdean 2012-08-13 23:00:03

0

您已經自己回答了問題#1。至於爲什麼它更有用,它只是一種簡短的輸入而不需要輸入。

+0

我甚至沒有注意到:) – mattbdean 2012-08-13 22:59:27

+0

我不會說它是短手。我會說這是說服,因爲它允許你傳遞0/1或更多的參數,而不需要提供多個方法簽名 – MadProgrammer 2012-08-13 22:59:50

0

要回答你的第二個問題,可變參數的一個好處是你可以在不傳遞參數的情況下調用一個採用可變參數的函數。相反,如果你的函數需要一個數組,而你需要調用它沒有任何價值,調用者需要顯式傳遞null。