Java方法参数中的“int …”是什么?

What is “int…” in Java method's parameter?

本问题已经有最佳答案,请猛点这里访问。

我遇到了一个方法定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
void doType(int... keyCodes) {
  doType(keyCodes, 0, keyCodes.length);
}

void doType(int[] keyCodes, int offset, int length) {
  if (length == 0) {
    return;
  }

  robot.keyPress(keyCodes[offset]);
  doType(keyCodes, offset + 1, length - 1);
  robot.keyRelease(keyCodes[offset]);
}

"int…"似乎表示整数参数的数目不确定,但该变量用作函数内的数组。有人能解释一下吗?


正如您已经正确说明的,这个Java符号是使方法接受可变数量的(在这种情况下)int参数。

要处理这个变量数量,您可以像数组一样访问它。

这个功能在Java 5中被引入。

这里也可以看到:

https://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html


你可以推断椭圆表示这个方法是可变的。

当您有一个可变数量的潜在参数时,您需要某种方法来迭代它们——否则它们在实践中并不十分有用。Java和C语言碰巧有数组索引语法。C和C++的EDCOX1为0,EDOCX1为1,EDCOX1为2。不同的语言可能有别的东西。

Java之所以具有数组语法的原因可能是因为它恰好匹配了它们实际实现的方式:作为编译时替换的简单数组参数。