7

この問題に関するドキュメントが見つかりません。

一部のListsおよびMapsでは、要素の順序はランダムであり、リスト / マップに追加された順序と同じではありません。var args については本当ですか、それとも送信されたのと同じ順序で受信されますか?

たとえば、フィールド名とルールの vararg リストを受け取るフォーム検証メソッドがあります。rules:Rules.INT, Rules.MAX.arg(100)を指定すると、指定された値が適切な整数であると想定されるため、ルールがチェックRules.INTされる前に、最初にルールがチェックされます。したがって、失敗した場合は呼び出されません-ただし、変数引数がランダムな順序で受信された場合、とにかく前に呼び出される可能性があり、値が整数でない場合は例外をスローする可能性があります。欲しいです。Rules.MAXRules.MAXRules.INTRules.MAXRules.MAXRules.INT

編集:明確にするために、var引数を使用した私の方法は次のとおりです。

public boolean validate(String name, Rule... rules)
{
   String value = getValue(name);
   for (Rule rule : rules)
   {
     if (! rule.match(value) )
        return false;
   }
   return true;
}

さて、このメソッドを by: で呼び出した場合、メソッドで前に反復/チェックされるvalidate("age", Rule.INT, Rule.MAX.arg(100) )ことを確認できますか?Rule.INTRule.MAXvalidate()

4

1 に答える 1