引数の長さが変更可能な、可変長引数のメソッドの仕組みと作り方を紹介します。
引数を、1~数個にしたいという場合はよくあります。その可能性を全て考慮してメソッドを作るのは非常に骨が折れます。
Javaには、そういった場合に1つのメソッドを書くだけで済む方法が用意されています。それが「可変長引数」という引数の作り方です。
可変長引数では「型... 変数」と書くことで、1以上の引数を設定しても自動で対応できるメソッドを作ることができます。
public static int sum(int... iArr) {
int res = 0;
for (int i = 0; i < iArr.length; i ++) {
res += iArr[i];
}
return res;
}
可変長引数は、必ずメソッドの引数の末尾に書かなければなりません。
public static String sum(int... iArr, String s) { int res = sum(iArr); return s + res; }
public static String sum(String s, int... iArr) { int res = sum(iArr); return s + res; }
可変長引数のメソッドと、通常の引数のメソッドが同じクラス内にあり、見かけ上の引数の形が同じ場合は、通常の引数のメソッドが優先的に呼び出されます。
System.out.println(MyClass.sum(1, 2));
package sample;
public class MyClass {
public static int sum(int... iArr) {
int res = 0;
for (int i = 0; i < iArr.length; i ++) {
res += iArr[i];
}
return res;
}
public static int sum(int i0, int i1) {
int res = i0 + i1;
return res;
}
}
可変長引数の実体は配列です。そのため、引数に配列を設定しても動作します。
System.out.println(MyClass.sum(new int[]{1, 2}));