java“...”运算符做什么(在类构造函数中找到)

时间:2013-08-11 23:55:58

标签: java class constructor operator-keyword

我已经遇到了类,并且显示了相应的构造函数:

public class Something{
    public static final int aConstant = 0;
    public static final int bConstant = 1;

    private final AnotherThing[] otherObjects
    private final float usefulNumber;

    public Something(float usefulNumber, AnotherThing ... otherObjects){
        this.usefulNumber = usefulNumber;
        this.otherObjects = otherObjects;
    }

    //various methods
}

当我将它放入Eclipse时,不会显示任何错误。我认为“......”是某种运算符,但我不确定。任何人都可以澄清这是否是什么,或者只是表明时间被保存了? (省时没有任何意义,因为班级只有两个属性)

2 个答案:

答案 0 :(得分:4)

这些被称为可变参数。

从代码中可以看出,它们是以数组形式出现的。

您可以为otherObjects传递不同数量的参数。

答案 1 :(得分:3)

这是一个告诉Java的方法或构造函数可以采用可变数量的参数的符号。它只能在最后一个参数类型之后使用。

需要...之前的参数:调用者必须为每个参数指定一个表达式。然而,其余参数是可选的:呼叫者可以指定零,一,二,三或任意多个参数。这些参数将作为单个数组传递给方法或构造函数。

在您的示例中,可以使用与呼叫者希望的AnotherThing一样多的实例进行呼叫。这是显式传递数组的语法简写:

public Something(float usefulNumber, AnotherThing[] otherObjects) ...