【问题标题】:What is "int..." in Java method's parameter? [duplicate]Java方法的参数中的“int ...”是什么? [复制]
【发布时间】:2016-04-30 21:57:32
【问题描述】:

我遇到了一个方法定义:

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

【问题讨论】:

  • 有两件事让我感到难过:1) 尽管使用搜索很容易回答这个问题,但有人提出了这个问题;2) 它很快就会收到 3 个答案
  • 谢谢 - 我在谷歌搜索“int...”时遇到了问题!

标签: java


【解决方案1】:

你的推论是正确的,省略号表示这个方法是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

【讨论】:

    【解决方案2】:

    正如您已经正确说明的那样,此 java 表示法是使该方法接受可变数量的(在这种情况下)int 参数。

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

    此功能是在 java 5 中引入的。

    参见此处:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多