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

时间:2016-01-24 16:24:35

标签: java

我遇到了方法定义:

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 ...”似乎表示不确定数量的整数参数,但该变量用作函数内的数组。有人可以解释一下吗?

2 个答案:

答案 0 :(得分:3)

正如你已经正确说明的那样,这种java符号是让方法接受一个可变数量的(在这种情况下)int参数。

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

此功能在java 5中引入。

另见:

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

答案 1 :(得分:2)

您正确地推断出省略号表示此方法为variadic

当你有可变数量的潜在参数时,你需要一些方法来迭代它们 - 否则它们在实践中不是很有用。 Java和C#恰好具有数组索引语法。 C和C ++碰巧有va_startva_argva_end宏。不同的语言可能有别的东西。

Java具体具有数组语法的原因可能是因为它碰巧匹配the way they are actually implemented: as a simple array parameter replaced at compile time