マンガで分かる Java入門講座

第8章 メソッド
8-7. 可変長引数

引数の長さが変更可能な、可変長引数のメソッドの仕組みと作り方を紹介します。

● 可変長引数

 引数を、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));

ソースコード)呼び出されるのは「sum(int i0, int i1)」の方
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}));

この講座のマンガ部分は「箱人形マンガ(Box Comic) 」で作成しています。
作成:2013/05/31  更新:2013/05/31  [Permalink]

クロクロ・ショップ
特殊な技術書多数あります
レトロ風RPG フルスクラッチ開発 全コード
レトロゲーム風RPGの全コードを掲載して解説した本
HTML5とJavaScriptで作る 落ち物パズルゲーム 全コード
『テトリス』や『ぷよぷよ』に類似した落ち物パズルゲームの全コードを掲載して解説した本
JavaScriptでリバーシゲームをつくろう
ライブラリを使わずに全コードを書いて、リバーシゲームを作るまでを徹底解説
ワールドマップ自動生成読本
二次元ゲームのワールドマップを自動生成するための本
レトロゲームファクトリー
過去のゲームを最新機に移植する会社のお仕事小説(新潮社)
顔貌売人 ハッカー探偵 鹿敷堂桂馬
プログラマーが探偵役のエンタメ・ミステリー第2弾 最先端の情報犯罪に安藤と鹿敷堂が挑みます(文藝春秋)
裏切りのプログラム ハッカー探偵 鹿敷堂桂馬
プログラマー鹿敷堂桂馬が、女性社長の安藤裕美と共に、IT業界で起きた事件に挑む。2016年の松本清張賞の最終候補作(文藝春秋)
×