我不确定我在这里使用的词汇,如果我错了请纠正我。
在 Javascript 中,我有以下代码:
let args = [1,2,3];
function doSomething (a, b, c) {
return a + b + c;
}
doSomething(...args);
如您所见,在调用 doSomething
时,我能够使用 ...
展开运算符,以便将我的参数“转换”为 1, 2, 3
现在,我正在尝试用 Java 做同样的事情。
假设我有一个 Foo
类:
public class Foo {
public int doSomething (int a, int b, int c) {
return a + b + c;
}
}
现在我想打电话给 doSomething
:
int[] args = {1, 2, 3};
我想使用类似 doSomething (...args)
的东西,而不是调用 doSomething(args[0], args[1], args[2])
。
我在函数声明中看到这是可能的,但我不想更改此类函数的实现。
原文由 Hammerbot 发布,翻译遵循 CC BY-SA 4.0 许可协议
Java 语言不提供运算符来执行此操作,但它的类库具有执行所需操作的工具。
使用 反射 API ,这就是它的用途。它要求您将参数打包在一个数组中。需要做很多额外的工作,包括包装/解包各个方法参数和方法结果,但您可以在运行时检查签名、构造数组并调用方法。
上面的代码打印 6 ( demo )。