menu
書いてる野郎
orebike@gmail.com
型を外部から導入する方法としてコンストラクタに渡すのが有名だがメソッド単体でもこれはできる。
戻り値の型の前にもう一個型の引数用の記述を追加することがポイント。
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; } }