public ChartValue(String name, Color color, double ... values) {
this.name = name;
this.values = values;
this.color = color;
}
我不太确定double ... values
的目的。
了double ... values
和double values
答案 0 :(得分:5)
double...
表示参数使用了varargs。
参数double...
是double[] values
的语法糖。编译器在编译时执行实际转换。 double values
只是意味着在参数列表中传递了一个参数。
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必须始终是最后一个参数,并且只能有一个。