コンテンツにスキップ

ジェネリクス

ジェネリクスとは

ジェネリクスとはオブジェクト生成時にクラスで使用する型を決定する機能です。 ArrayListクラスなどコレクションで主に使われています。 使う型をあらかじめ固定にせず、newするときに型を決めたいときに使います。

ジェネリクスクラスを生成する場合、クラス名の後に<型名>を付けます。

クラス名<型名> 変数名 = new クラス名<型名>();

ArrayListクラスでString型を指定するには以下のようにします。

ArrayList<String> list = new ArrayList<String>();

ただし、型名にintやdoubleなどの基本型は使うことは出来ません。 この場合、IntegerやDoubleなどのラッパークラスを使います。

ジェネリクスクラス

自分でジェネリクスクラスを定義するにはクラス名の後に <仮の型名> を付けます。 この仮の型名は E などを指定します。

例えば以下のようなクラスがあるとして、Stringに限らずいろいろな型で使えるようにジェネリクス化してみます。

class Test{
    String num;
    void set(String n){
        num = n;
    }
    String get(){
        return num;
    }
}

クラス名の後に仮の型名 E を指定します。そして、String を E に変更します。

class Test<E>{
    E num;

    void set(E n){
        num = n;
    }

    E get(){
        return num;
    }
}

このクラスを利用するには以下のように生成します。

Test<String> t = new Test<String>();

すると、クラス定義の E に String が入って使うことが出来ます。