对于java var-args,是否可以确定传递给方法的数组是否是从var-args创建的?

时间:2014-10-13 13:41:50

标签: java arrays variadic-functions

例如,我有这个使用var-args的方法:

void doSomething(int... args);

我可以有两种不同的用法:

// 1) using an array
int[] data = new int[] {1, 2};
doSomething(data);

// 2) using a sequence of arguments
doSomething(1, 2);

假设方法doSomething()需要确保传递的数组是"不可变的"从外面,它将复制数组。但是,如果调用者已经传递了一系列参数,那么该方法之外没有对该数组的引用,因此我们可以避免数组副本的成本。

是否可以确定在运行时如何调用它?

1 个答案:

答案 0 :(得分:3)

没有。据我所知,无法确定调用者调用该方法的方式,只是调用了该方法。