Java varargs收到的顺序与它们的顺序相同吗?

Cli*_*ote 6 java variadic-functions

我找不到关于这个问题的任何文件.

在一些ListsMaps,所述元素的顺序是随机的,而不是在它们被添加到列表/地图的顺序相同.关于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;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我通过以下方法调用此方法validate("age", Rule.INT, Rule.MAX.arg(100) ),我可以确定在方法Rule.INT之前将对其进行迭代/检查吗?Rule.MAXvalidate()

use*_*421 10

所有方法参数都按指定的顺序接收,无论是varargs还是其他方式.在引擎盖下,varargs参数是指定参数类型的数组,而不是可能扰乱源文本中的顺序的任何类型的集合.