我正在编写一个带有可变数量参数的方法,使用 Java 提出的构造函数:
public static boolean myMethod(String... strings) {
for (String s: strings) {
// Applying some logic / treatment on strings
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道:Java 如何处理strings参数?是把它当作一个ArrayList,还是一个简单的String[]?在执行方法时是否保持参数的顺序?
例如,如果我像这样使用我的方法:
MyMethodUtils.myMethod(first, second, third, fourth, fifth);
Run Code Online (Sandbox Code Playgroud)
我保证first会先治疗,然后second等等......还是不?
额外问题:这种构造函数的具体名称是什么String...(在 Java 中)?
是的,排序被保留。
这是因为String...(技术上称为可变参数,但通常非正式地称为“可变参数”)只是String[]. 所以:
MyMethodUtils.myMethod(first, second, third, fourth, fifth);
Run Code Online (Sandbox Code Playgroud)
等同于
MyMethodUtils.myMethod(new String[]{first, second, third, fourth, fifth});
Run Code Online (Sandbox Code Playgroud)
(实际上,您可以调用后者)。
在任何其他情况下,您都不会期望数组的元素改变顺序,也不会期望它们具有可变的 arity 参数。
您可以在JLS Sec 15.12.4.2 中找到它:
如果
m使用k ? n实参表达式调用,或者,如果m使用k = n实参表达式调用并且第k' 个参数表达式的类型与赋值不兼容T[],则参数列表(e1, ..., en-1, en, ..., ek)被评估为好像它写为(e1, ..., en-1, new |T[]| { en, ..., ek }),其中|T[]|表示的擦除(第 4.6 节)T[]。
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |