2011-04-27 167 views
3

可能重複:
What does 「…」 mean in Java?
Java array argument 「declaration」 syntaxObject ...是什麼意思?

任何人都可以證實,如果我看到Object...參數在下面的方法調用是正確的:

public static void setValues(PreparedStatement preparedStatement, Object... values) 
    throws SQLException 
{ 
    for (int i = 0; i < values.length; i++) { 
     preparedStatement.setObject(i + 1, values[i]); 
    } 
}  

由於一個Object數組的數組?我不記得在Java之前看到...

+0

@Jigor Joshi:那個人是封閉自己的複製。 – Bobby 2011-04-27 16:02:43

+0

感謝這裏的受訪者。我從來沒有見過......在Java之前。 – 2011-04-27 16:04:19

回答

8

它相當於Object[],但允許調用程序一次只指定一個值作爲參數,編譯器將創建一個數組。所以這個電話:

setValues(statement, arg1, arg2, arg3); 

相當於

setValues(statement, new Object[] { arg1, arg2, arg3 }); 

documentation for the varargs feature瞭解更多信息(Java 5中引入)。

1

你在看什麼是可變參數參數。關於它的文檔可以在here找到。

可變參數等價於一個對象數組,但是有語法糖來調用該方法更容易。因此,舊的方式是(此代碼是從文件上):

Object[] arguments = { 
    new Integer(7), 
    new Date(), 
    "a disturbance in the Force" 
}; 

String result = MessageFormat.format(
    "At {1,time} on {1,date}, there was {2} on planet " 
    + "{0,number,integer}.", arguments); 

可變參數你寫:

String result = MessageFormat.format(
    "At {1,time} on {1,date}, there was {2} on planet " 
    + "{0,number,integer}.", 7, new Date(), "a disturbance in the Force"); 

注意,自動裝箱幫助這裏的INT 7轉化爲new Integer(7)沒有你必須明確地聲明它。

3

Java教程(Passing Information to a Method or Constructor):

任意參數

您可以使用一種稱爲構造可變參數 的數量值 任意數量傳遞給方法。當您的 不知道有多少個特定的參數將傳遞給 方法時,您使用可變參數。這是一個手動創建 陣列的快捷方式(以前的方法 可能使用了可變參數而不是 陣列)。要使用可變參數,您可以按照 類型的最後一個參數 省略號(三個點,...),然後 空間和參數名稱。然後可以用該參數的任何 號碼調用 方法,包括 無。

public Polygon polygonFrom(Point... corners) { 
    int numberOfSides = corners.length; 
    double squareOfSide1, lengthOfSide1; 
    squareOfSide1 = (corners[1].x - corners[0].x)*(corners[1].x - corners[0].x) 
      + (corners[1].y - corners[0].y)*(corners[1].y - corners[0].y) ; 
    lengthOfSide1 = Math.sqrt(squareOfSide1); 
    // more method body code follows that creates 
    // and returns a polygon connecting the Points 
} 

可以看到 的是,在該方法內,角部 當作陣列。方法 被稱爲或者與陣列或 參數序列。 中的代碼在任何一種情況下都會將 參數視爲一個數組。