知っていると便利な章

4.13. ジェネリックメソッド

『目的』

4.12. 原型を使用しないの例ではListのみを受け付ける型安全なメソッドを作りました。 しかし、そのおかげで型に対して柔軟性に欠けるメソッドとなってしまいました。
ジェネリックメソッドを使用して、型安全かつ柔軟に対応できるようにしましょう。

ジェネリックメソッドを使用したリスト操作
以下の例ではprintAllGenericをジェネリックメソッドとして定義しています。
この場合、printAllGenericは引数としてListを受け付けるため、型安全性が保たれます。 また、Tがどんな型でもprintAllGeneric本体を書き換える必要はないため、柔軟性が高められます。

List<Integer> l = new LinkedList<>();
l.add(123);
l.add(456);

printAllGeneric(l);

Integer i = l.get(0);

// ジェネリックメソッド
private static <T> void printAllGeneric(List<T> list) {
    // 要素はT型として取得できる。
    for (T e : list) {
        System.out.println(e);
    }
    // リストから取り出した要素はT型であることが保証されているため、
    // 要素の追加が可能。
    T t = list.get(0);
    list.add(t);
}

< 前のページへ

Pagetop