2013-10-13 13 views
5

この問題に関するドキュメントは見つかりません。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()方法?

+1

iはルール '以来...' '[]ルール'と同じデータ型が同等である、答え –

+1

私は答えはイエスであると思うだろうに興味があるでしょう。 – vikingsteve

+0

答えははいです。 Javaはメソッド引数をシャッフルしません。 –

答えて

7

すべてメソッドの引数は、可変引数かそうでなければ、指定された順序で受信されます。フードの下では、varargsパラメータは、指定された引数型の配列であり、ソーステキストの順序を混乱させるような種類のコレクションではありません。すなわち、配列、順序付き -

関連する問題