public ChartValue(String name, Color color, double ... values) {
this.name = name;
this.values = values;
this.color = color;
}
我不太确定double ... values
.
double ... values
和有什么区别double values
public ChartValue(String name, Color color, double ... values) {
this.name = name;
this.values = values;
this.color = color;
}
我不太确定double ... values
.
double ... values
和有什么区别double values
double...
表示参数使用可变参数。
该论点double...
是double[] values
. 编译器在编译时进行实际翻译。double values
仅仅意味着在参数列表中传递了一个参数。
varargs
从 1.5 版开始使用 Java,在此处阅读更多信息
double...
表示该方法将接受 0 个或多个 double 值。这些将是价值的地方。
因此ChartValues("dude", Color.BLUE, 1.2, 1.5, 1.6)
将 1.2、1.5 和 1.6 放入变量值中
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)
编译器不知道如何将方法调用中的参数映射到方法定义中的参数。使其工作的规则是可变参数必须始终是最后一个参数,并且只能有一个。