什么是“公共天气预报员(整数...拉链){”在java中的含义

时间:2009-07-22 14:46:01

标签: java constructor

我正在尝试从教程中读取一些Java代码,我不明白这一行:

 public Weatherman(Integer... zips) {
  • 我不明白...代表它是什么(整数拉链)我会理解有一个类的整数变量叫做拉链。但......让我很困惑。

5 个答案:

答案 0 :(得分:13)

这些是“varargs”,语法糖,允许您通过以下方式调用构造函数:

new Weatherman()
new Weatherman(98115);
new Weatherman(98115, 98072);
new Weatherman(new Integer[0]);

在封面下,参数作为数组传递给构造函数,但是您不需要构造一个数组来调用它。

答案 1 :(得分:5)

这是一个“vararg”。它可以处理任意数量的Integer个参数,即

new Weatherman(1);

一样有效
new Weatherman();

new Weatherman(1, 7, 12);

在方法中,您可以将参数作为Integer数组访问。

答案 2 :(得分:3)

您正在看Java的varargs feature,自Java 1.5以来就可以使用。

zips是构造函数中的Integer数组,但是可以使用可变数量的参数调用构造函数。

答案 3 :(得分:2)

来自Java tutorials

  

您可以使用名为varargs的构造将任意数量的值传递给方法。当您不知道将多少特定类型的参数传递给该方法时,您可以使用varargs。这是手动创建数组的快捷方式(前一种方法可能使用了varargs而不是数组)。

     

要使用varargs,您可以通过省略号(三个点,...),一个空格和参数名称来跟踪最后一个参数的类型。然后可以使用任何数量的参数调用该方法,包括none。

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
}
  

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

答案 4 :(得分:0)

如果我记得很好,当有可变数量的参数

时会使用它