变量长度参数是否被视为Java中的数组?
作者:互联网
据我所知,数组由固定数量的元素组成,并且可变长度参数在传递时使用相同数量的参数(相同类型).但他们一样吗?我可以通过一个预期的另一个吗?
解决方法:
是的,如果你有一个带有varargs参数的方法,如下所示:
public void foo(String... names)
你这样称呼它:
foo("x", "y", "z");
然后编译器将其转换为:
foo(new String[] { "x", "y", "z"});
names参数的类型是String [],可以像任何其他数组变量一样使用.请注意,它仍然可以为null:
String[] nullNames = null;
foo(nullNames);
有关更多信息,请参见documentation for varargs.
这并不意味着varargs可以与数组互换 – 您仍然需要声明接受varargs的方法.例如,如果您的方法声明为:
public void foo(String[] names)
那么调用它的第一种方法就不会编译.
标签:java,arrays,variadic-functions 来源: https://codeday.me/bug/20190929/1830136.html