Java / 基礎 / ジェネリクス / メソッドのジェネリクス

Java / 基礎 / ジェネリクス / メソッドのジェネリクス

型を外部から導入する方法としてコンストラクタに渡すのが有名だがメソッド単体でもこれはできる。

型を引数に取る

メソッドの定義

戻り値の型の前にもう一個型の引数用の記述を追加することがポイント。

class Hoge{
    public <T> T piyo(String a){
        T b = (T)a;
        return b;
    }
}

publicの直後に書かれている括弧の中が引数用のパラメータの受けになる。その後に書かれている括弧が無い型指定は戻り値の型になる。

使い方

メソッドの前に型を記述することでメソッド内部に型情報を送り込むことができる

Hoge hoge = new Hoge();
Moge = hoge.<Moge>piyo("なにか");

型の自動決定

メソッドの定義

引数に型情報を持たせて一気に渡すこともできる。

class Hoge{
    public <T> T piyo(T a){
        T b = a;
        return b;
    }
}

使い方

引数の型情報と内部で使う型が同一の場合、自明なので型情報を渡さなくても動作する。

Hoge hoge = new Hoge();
Moge moge = new Moge("なにか");
Moge = hoge.piyo(moge);

型の拘束

メソッドの定義

このようにすることで引数にとれる型をPiyoインターフェースの実装クラスやサブクラスに限定することができる。

class Hoge{
    public <T extends Piyo> T piyo(T a){
        T b = a;
        return b;
    }
}

タグ

java/basic/generics/generic_of_methods.txt · 最終更新: 2020-10-16 09:09 by ore