我找不到有关此问题的任何文档。Java可变参数是按照它们的相同顺序接收的吗?
在某些Lists
和Maps
中,元素的顺序是随机的,并且与添加到列表/地图的顺序不同。这是真的关于var args,还是他们收到的顺序是相同的?
例如,我有一个表单验证方法,它需要一个字段名和一个可变的规则列表。如果我提供规则:Rules.INT, Rules.MAX.arg(100)
,那么我希望在检查Rules.MAX
规则之前先检查Rules.INT
规则,因为Rules.MAX
假定给定值是适当的整数。因此,如果Rules.INT
失败,则不会调用Rules.MAX
- 但是,如果以随机顺序接收可变参数,则Rules.MAX
无论如何都可能在Rules.INT
之前被调用,并且如果该值不是整数,则可能会抛出异常,这是我不想要。
编辑:这是我的方法与变参,为澄清:现在
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()
方法?
我会感兴趣的回答 –
我认为答案是肯定的,因为'Rule ...'与Rule []'的数据类型是相同的数据类型 - 也就是一个数组,具有排序。 – vikingsteve
答案是肯定的。 Java不会混淆方法论点。 –