1
12
这些方法实际上是相同的。 这个特性称为varargs,它是一个编译器特性。幕后是翻译成前一个版本的。 如果您定义一个接受对象的方法,会有一个陷阱…您发送了一个object[]类型的参数! |
2
3
我想在Shimi的解释中增加一点,即vararg s语法的另一个限制是vararg必须是最后一个声明的参数。所以你不能这样做:
这意味着任何给定的方法只能有一个vararg参数。在希望传递多个数组的情况下,只能对其中一个数组使用varargs。 实际上,当您将参数视为任意数量的不同值(而不是数组)时,varargs处于最佳状态。Java5将它们映射到一个数组,因为这是最方便的事情。 一个很好的例子是string.format()。这里,varargs与第一个参数中的格式占位符匹配。 |
3
1
后者在Java 5中引入,并且现有的库正在逐步被重新构建以支持它。您可能仍然会使用前者强调该方法需要2+个输入,另外还有一些限制…可以使用。 |
4
0
当然,没有性能问题或类似的事情需要考虑,所以归根结底就是语义问题。 您是否希望方法的调用者手头有一个foo数组?然后使用foo[]版本。使用varargs变量强调使用“一束”foo而不是数组的可能性。 VARARGS的一个经典例子:字符串格式(C语言,DunNo在Java中调用它):
在这里,您期望参数的类型不同,因此拥有一个参数数组是非常不常用的,因此varargs变量。 另一方面
使用数组是完全合理的。 另外请注意,在参数列表的末尾,可以有多个数组参数和一个vararg参数。 |
Toniq · javascript为php保存多维数组 1 年前 |
Jannis · Java中数组的怪异行为 1 年前 |
callum · 如何识别数组中与给定序列不匹配的元素? 1 年前 |
tenfour · 如何使用数组元素的索引初始化数组元素 2 年前 |
Guillaume · 使用操作从Python列表创建numpy数组 2 年前 |
maxMas · Swift 5:为什么会出现索引超出范围错误? 2 年前 |