我找不到关于这个问题的任何文件。
在某些Lists
和Maps
中,元素的顺序是随机的,与将它们添加到列表/地图的顺序不同。关于var args是真的,还是按照发送它们的顺序收到它们?
例如,我有一个表单验证方法,它采用字段名称和vararg规则列表。如果我提供规则:Rules.INT, Rules.MAX.arg(100)
,那么我希望在检查Rules.INT
规则之前先检查Rules.MAX
规则,因为Rules.MAX
假定给定值是一个适当的整数。因此,如果Rules.INT
失败,则不会调用Rules.MAX
- 但是如果以随机顺序接收varargs,则Rules.MAX
可能会在Rules.INT
之前被调用,并且可能如果值不是整数,则抛出异常,这是我不想要的。
编辑:这是我使用var args的方法,以澄清:
public boolean validate(String name, Rule... rules)
{
String value = getValue(name);
for (Rule rule : rules)
{
if (! rule.match(value) )
return false;
}
return true;
}
现在,如果我通过validate("age", Rule.INT, Rule.MAX.arg(100) )
调用此方法,我是否可以确保在Rule.INT
方法Rule.MAX
之前对validate()
进行迭代/检查?
答案 0 :(得分:9)
按指定的顺序接收所有方法参数,无论是varargs还是其他方式。在引擎盖下,varargs参数是指定参数类型的数组,而不是可能扰乱源文本中顺序的任何类型的集合。