调用varargs方法混合元素和元素数组不起作用

EA.*_*EA. 7 java

我有一个带有以下签名的方法:

public void foo(String... params);
Run Code Online (Sandbox Code Playgroud)

所以这些调用都是有效的:

foo("Peter", "John");
foo(new String[] { "Peter", "John" });
Run Code Online (Sandbox Code Playgroud)

但为什么这个无效?

foo("Peter", new String[] { "John" });
Run Code Online (Sandbox Code Playgroud)

dog*_*ane 8

来自文档:

最后一个参数类型之后的三个句点表示最终参数可以作为数组参数序列传递.

您不能传递参数数组.

  • 你不能这样做是件好事.自从Java5以来,当自动装箱,varargs和阵列发挥作用时,解决方法的规则已经变得过于棘手. (2认同)