Java 逆引き集 | 可変引数メソッド(…) — 汎用ユーティリティ

Java Java
スポンサーリンク

可変引数メソッド(...) — 汎用ユーティリティ

Javaでは、メソッドの引数の数が決まっていない場合に 可変長引数(varargs) を使えます。これにより「0個以上の引数」を柔軟に受け取ることができ、ユーティリティメソッドを簡潔に書けます。


基本構文

戻り値の型 メソッド名(型... 引数名) {
    // 引数名は配列のように扱える
}
Java
  • 型... と書くと「0個以上の引数」を受け取れる。
  • メソッド内では 配列 として扱える。

基本例

合計を計算するメソッド

int sum(int... nums) {
    int total = 0;
    for (int n : nums) {
        total += n;
    }
    return total;
}

// 呼び出し例
System.out.println(sum());             // 0
System.out.println(sum(5));            // 5
System.out.println(sum(1, 2, 3, 4));   // 10
Java

👉 引数の数が決まっていなくても呼び出せる。


通常引数との組み合わせ

可変長引数は 最後にしか置けない

double average(String label, int... nums) {
    int total = 0;
    for (int n : nums) total += n;
    return (nums.length == 0) ? 0 : (double) total / nums.length;
}

System.out.println(average("Math", 80, 90, 100)); // 90.0
System.out.println(average("Empty"));             // 0.0
Java

例題で練習

例題1: 最大値を求める

int max(int... values) {
    if (values.length == 0) return Integer.MIN_VALUE;
    int m = values[0];
    for (int v : values) {
        if (v > m) m = v;
    }
    return m;
}

System.out.println(max(3, 7, 2, 9)); // 9
Java

👉 いくつでも渡せる最大値計算。


例題2: 文字列を連結する

String join(String... words) {
    StringBuilder sb = new StringBuilder();
    for (String w : words) {
        sb.append(w);
    }
    return sb.toString();
}

System.out.println(join("Hello", " ", "World")); // Hello World
Java

👉 文字列結合も柔軟に。


例題3: ログ出力ユーティリティ

void log(String level, String... messages) {
    for (String msg : messages) {
        System.out.println("[" + level + "] " + msg);
    }
}

log("INFO", "Start", "Processing", "End");
Java

👉 ラベル+複数メッセージをまとめて出力。


テンプレート集

基本形

戻り値型 メソッド名(型... args) {
    for (型 a : args) {
        // 処理
    }
    return 結果;
}
Java

引数+可変長引数

戻り値型 メソッド名(型 fixed, 型... args) {
    // fixed は必須、args は任意
}
Java

注意点と落とし穴

  • 最後にしか置けない: 可変長引数は引数リストの末尾に。
  • 配列として渡せる: sum(new int[]{1,2,3}) のように配列を直接渡すことも可能。
  • オーバーロードに注意: 可変長引数と配列引数は曖昧になりやすい。
  • パフォーマンス: 毎回配列が生成されるため、大量呼び出しではオーバーヘッドになることもある。

まとめ

  • 可変長引数(…) は「0個以上の引数」を柔軟に受け取れる。
  • ユーティリティメソッド(合計、最大値、文字列結合、ログ出力など)に便利。
  • 内部では配列として扱うので、ループ処理が基本。
  • 最後にしか置けないというルールを覚えておく。

👉 練習課題として「注文金額をいくつでも渡せるメソッドを作り、合計と平均を返す」などを試すと、業務ロジックに直結した理解が深まります。

タイトルとURLをコピーしました