2016-01-24 80 views
0

我碰到一个方法定义:Java方法参数中的“int ...”是什么?

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

+0

它被称为“Varargs”https://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html –

+0

有两件事让我难过:1)这个问题被问到,虽然它很容易通过使用搜索来回答,并且2)它在任何时候都收到3个答案 – Marged

+0

谢谢 - 我在搜索“int ...”时遇到了麻烦! – user1860288

回答

2

你是正确的推断出的省略号表明该方法是variadic

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

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