LoginSignup
1
0

More than 1 year has passed since last update.

[Kotlin]ジェネリクスってナンダ

Last updated at Posted at 2021-05-22

ジェネリクスとは

<>
こんな感じの記号見たことありませんか?
または。
<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型です。
値は、同じなんですけど、型が違うんですね。
その為、入れた値をメソッドで操作したい時に違いが出てきます。

例えば、下記をご覧ください。

image.png

これは、Any型のコードなのですが、見て分かる通り提供している関数が少ない!!!!!!!!!!
だから、値を持つだけだったらAny型でいいですけど、それでは不便!って場合はジェネリクス!って感じですかね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0