この問題に関するドキュメントは見つかりません。Java varargsは、与えられた順序と同じ順序で受信されますか?
一部のLists
およびMaps
では、要素の順序はランダムであり、リスト/マップに追加された順序とは異なります。それはvar argsについて真実ですか、あるいは送信されたのと同じ順序で受け取られていますか?
例えば、私は、フィールド名とルールの可変引数リストを受け取り、フォーム検証方法を、持っています。私はルールを供給した場合:Rules.INT, Rules.MAX.arg(100)
をRules.MAX
が与えられた値が適切な整数であることを前提としているので、私は、Rules.MAX
ルールがチェックされる前Rules.INT
ルールは、最初にチェックするとよいでしょう。可変引数は、ランダムな順序で受信されている場合しかし、その後、Rules.MAX
はとにかくRules.INT
前に呼ばれるかもしれません、そして値が何である整数でない場合、例外を投げる可能性 - Rules.INT
が失敗した場合そのため、その後、Rules.MAX
は呼ばれないでしょう私はほしくない。
編集:私はすることによって、このメソッドを呼び出した場合、
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.MAX
前に、私はRule.INT
がチェック/反復されることを確認することができ、ここに私の方法は明確化のため、VaRの引数にありますvalidate()
方法?
iはルール '以来...' '[]ルール'と同じデータ型が同等である、答え –
私は答えはイエスであると思うだろうに興味があるでしょう。 – vikingsteve
答えははいです。 Javaはメソッド引数をシャッフルしません。 –