可変長引数
今度は可変長引数のテスト。
public class Test { public static void main(String[] args) { VarArgs varArgs = new VarArgsImpl(); //可変長引数の呼出 varArgs.varArgsTest("AAA", "BBB", "CCC"); String[] strings = {"XXX", "YYY"}; //配列型でも呼び出せる varArgs.varArgsTest(strings); //配列型で宣言したら、可変長引数では呼び出せない //varArgs.varArgsTest(1, "AAA", "BBB", "CCC"); //これはコンパイルエラー //配列型は配列型で呼び出す varArgs.varArgsTest(1, strings); } }
インターフェースでも宣言できる。
public interface VarArgs { void varArgsTest(String... strings); //void varArgsTest(String[] strings); //これはコンパイルエラー void varArgsTest(int i, String[] strings); }
実装クラス。
public class VarArgsImpl implements VarArgs { public void varArgsTest(String... strings) { for(String string : strings){ System.out.print(string); } System.out.println(); } public void varArgsTest(int i, String[] strings) { for(String string : strings){ System.out.print(string); } System.out.println(); } }
実行結果。
AAABBBCCC XXXYYY XXXYYY
とは言っても、実行時例外が増えそうだし、きちんと宣言するか、DTOを使うかなぁ。
あるとしたら、パラメータを渡すとき?
・・・それはCollectionで十分ではないかとも思われるが。