この問題に関するドキュメントが見つかりません。
一部のLists
およびMaps
では、要素の順序はランダムであり、リスト / マップに追加された順序と同じではありません。var args については本当ですか、それとも送信されたのと同じ順序で受信されますか?
たとえば、フィールド名とルールの vararg リストを受け取るフォーム検証メソッドがあります。rules:Rules.INT, Rules.MAX.arg(100)
を指定すると、指定された値が適切な整数であると想定されるため、ルールがチェックRules.INT
される前に、最初にルールがチェックされます。したがって、失敗した場合は呼び出されません-ただし、変数引数がランダムな順序で受信された場合、とにかく前に呼び出される可能性があり、値が整数でない場合は例外をスローする可能性があります。欲しいです。Rules.MAX
Rules.MAX
Rules.INT
Rules.MAX
Rules.MAX
Rules.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.INT
Rule.MAX
validate()