对象是什么意思?

时间:2011-04-27 15:51:20

标签: java arrays

  

可能重复:
  What does “…” mean in Java?
  Java array argument “declaration” syntax

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

3 个答案:

答案 0 :(得分:8)

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

setValues(statement, arg1, arg2, arg3);

相当于

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

有关详细信息,请参阅documentation for the varargs feature(Java 5中介绍)。

答案 1 :(得分:3)

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

  

任意参数数量

     

您可以使用名为varargs的构造   传递任意数量的值   一种方法。你使用varargs   不知道有多少特别的   参数类型将传递给   方法。这是创建一个快捷方式的捷径   手动数组(以前的方法   本来可以使用varargs而不是   数组)。要使用varargs,请按照   一个最后一个参数的类型   省略号(三点,......),然后是   空间和参数名称。该   然后可以使用any调用方法   该参数的编号,包括   无。

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
}
  

你可以看到   在方法内部,角落是   像阵列一样对待该方法可以   被称为使用数组或使用   一系列论据。代码在   方法体会对待   参数在任何一种情况下都是一个数组。

答案 2 :(得分:1)

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

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),而无需您明确声明它。