ジェネリクスとは
<>
こんな感じの記号見たことありませんか?
または。
<T>
これが、ジェネリクスです。以上。
ジェネリクスってドキュメント内を見ると、当たり前のように使われている言葉なので、意外と読む際に躓くポイントではあります。
しかし、それ位普及している言葉なので、知っておく必要があるでしょう。
ジェネリクスは、日本語で総称型になります。
また、型パラメータともいう。
まぁ、クラスの引数の型を実際にセットした型に合わせる形ですね。
「型引数自由」と覚えるのが良いでしょう。
class PiyoPiyo<T>(t: T) {
val hoge = t
}
インスタンスをすると分かると思うかもしれませんが、ジェネリクスを用いるどんな型引数も当てはめることが出来ます。
まるで、ポケモンのメタモンの様に様変わりできます!(伝われー!)
val piyoPiyo = PiyoPiyo("動物")
val piyoPiyo2 = PiyoPiyo(10)
val piyoPiyo3 = PiyoPiyo(100L)
終わり
ただ、それだけなんですよね。
「型引数自由」
以上です!
追記
ある程度勉強したことある人からAny型と同じじゃん!と思うかもしれないので、それとの違いも触れておきたいと思います!
ちなみに、Any型もメタモンの様ではあるのですが、飽くまでもAny型です。
ややこしいですね笑。
先ほどのジェネリスクはString型を入れると、String型になりますが、Any型にString型を入れてもAny型です。
値は、同じなんですけど、型が違うんですね。
その為、入れた値をメソッドで操作したい時に違いが出てきます。
例えば、下記をご覧ください。
これは、Any型のコードなのですが、見て分かる通り提供している関数が少ない!!!!!!!!!!
だから、値を持つだけだったらAny型でいいですけど、それでは不便!って場合はジェネリクス!って感じですかね。