有...作为输入变量

时间:2013-06-01 21:02:04

标签: java

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

我不太确定double ... values的目的。

double ... valuesdouble values

之间的区别

3 个答案:

答案 0 :(得分:5)

double...表示参数使用了varargs。

参数double...double[] values的语法糖。编译器在编译时执行实际转换。 double values只是意味着在参数列表中传递了一个参数。

从版本1.5开始,

varargs hava一直在Java中阅读更多here

答案 1 :(得分:5)

double...表示该方法将接受0或更多双精度值。这些将成为价值观的一部分。

所以ChartValues("dude", Color.BLUE, 1.2, 1.5, 1.6)会将1.2,1.5和1.6放入变量值

答案 2 :(得分: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

请注意,每种方法只能使用一次varargs。这不会编译:

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

因为如果你叫它:

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

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