2
public ChartValue(String name, Color color, double ... values) {
        this.name = name;
        this.values = values;
        this.color = color;
    }   

我不太确定double ... values.

double ... values和有什么区别double values

4

3 回答 3

5

double...表示参数使用可变参数。

该论点double...double[] values. 编译器在编译时进行实际翻译。double values仅仅意味着在参数列表中传递了一个参数。

varargs从 1.5 版开始使用 Java,在此处阅读更多信息

于 2013-06-01T21:03:18.360 回答
5

double...表示该方法将接受 0 个或多个 double 值。这些将是价值的地方。

因此ChartValues("dude", Color.BLUE, 1.2, 1.5, 1.6)将 1.2、1.5 和 1.6 放入变量值中

于 2013-06-01T21:03:31.670 回答
3

double...表示可变参数。

这意味着可以传入未指定数量的标量参数。

所以我可以像这样调用方法

new ChartValue("blue", Color.BLUE, 1.2d, 5.8d, 6.05d, 100.0d)

在构造函数中,它接收所有的双精度作为一个数组,所以你可以像访问它一样

public ChartValue(String name, Color color, double ... values) {
    this.name = name;
    this.values = values;
    this.color = color;

    // at this point, "values" is just an array of doubles.
    System.out.println("Got " + values.length + " values.");
    for (double value : values) {
        System.out.println("Passed in " + value);
    }
}

此页面有详细信息:

https://today.java.net/pub/a/today/2004/04/19/varargs.html

请注意,每个方法只能使用一次可变参数。这不会编译:

public ChartValue(String name, Color... colors, double... values) {
    ...
}

因为如果你调用它:

new ChartValue("blah", Color.BLUE, Color.ORANGE, 5.0d, 6.0d)

编译器不知道如何将方法调用中的参数映射到方法定义中的参数。使其工作的规则是可变参数必须始终是最后一个参数,并且只能有一个。

于 2013-06-01T21:10:00.280 回答