对象是什么意思?

可能重复:
Java中的“……”是什么意思?
Java数组参数“声明”语法

任何人都可以确认我在下面的方法调用中看到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之前看过...

它等同于Object[] ,但允许调用者一次只指定一个值作为参数,编译器将创建一个数组。 所以这个电话:

 setValues(statement, arg1, arg2, arg3); 

相当于

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

有关更多信息,请参阅varargsfunction的文档 (在Java 5中引入)。

从Java教程(将信息传递给方法或构造函数 ):

任意数量的参数

您可以使用名为varargs的构造将任意数量的值传递给方法。 当您不知道将多少特定类型的参数传递给该方法时,您可以使用varargs。 这是手动创建数组的快捷方式(前一种方法可能使用了varargs而不是数组)。 要使用varargs,您可以通过省略号(三个点,…),一个空格和参数名称来跟踪最后一个参数的类型。 然后可以使用任何数量的参数调用该方法,包括无参数。

 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 } 

您可以看到,在方法内部,角被视为数组。 可以使用数组或参数序列调用该方法。 在任何一种情况下 ,方法体中的代码都会将参数视为数组。

您正在查看的是varargs参数。 有关它的文档可以在这里找到。

Varargs相当于一个对象数组,但是有一些语法糖可以让调用该方法更容易。 所以旧方法是(这段代码来自上面的文档):

 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); 

使用varargs,你可以写:

 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"); 

请注意,autoboxing有助于将int 7转换为new Integer(7)而无需显式声明它。