static void m(int ...x,double ...y){}
我尝试使用这种方法。但它编译错误。我想知道原因。
int x[]=new int[2];
double y[]=new double[2];
我像这样做了两个数组,我想将它们解析为方法m。
m(x,y); like this.
你不能像void m(int ...x,double ...y){}
那样拥有双 vararg。
相反,您可以拥有void m(int[] x, double[] y){}
.
从官方文档中读取:
变量只能在最终参数位置使用。
关于 Varargs 的 Oracle 文档
你不能有双变量,但关键问题是"为什么这是不可能的?"因为限制不是来自Java本身。例如,考虑以下两种情况:
- 如果你有
someMehod(Shape ...shape, Square ...square)
->你不知道Shape
参数在哪里停止或Square
参数从哪里开始。 - 如果
Square
扩展Shape
->则由于多态性,Shape
类可以存在于...shape
和...square
参数中,这是非常令人困惑的。