为什么在Java varargs中会出现这个编译错误(int ..x,双倍 ..y)?


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本身。例如,考虑以下两种情况:

  1. 如果你有someMehod(Shape ...shape, Square ...square)->你不知道Shape参数在哪里停止或Square参数从哪里开始。
  2. 如果Square扩展Shape->则由于多态性,Shape类可以存在于...shape...square参数中,这是非常令人困惑的。

相关内容

  • 没有找到相关文章

最新更新