Javaと同様Kotlinにもジェネリクスがあります。

ジェネリクスは基本型を定義し、それを凡庸型に落とし込むことができる機能です。
たとえば、クラスのプロパティの型を決めずに、クラスを作成する際に型を決めることができます。

Androidでいうと、関数の返り値を柔軟に扱いたい、APIで使用するAsyncTaskなどに使います。
では、例を見ていきましょう。

3.ジェネリクス定義方法

Containerのプロパティvalueの型を凡庸型にしたいため、
valueにジェネリクスを使用しています。

ジェネリクスの定義方法は以下になります。

class クラス名<定義型(主にTを使用)>(変数型 変数名 : 定義型){

}

ここで、宣言しているTはTypeを表すTで、特に指定はありませんが、
Tで宣言することが一般的なようです。

1.2.の例では、クラスを作成する際にTを利用し、それぞれ、Int・String型として、valueを利用しています。

このようにジェネリクスを使うことで、Int、Stringという風に複数の型を定義することなく、
型にこだわらず、柔軟に定義することができました。