Scalaの「型パラメータ(type parameters)」は、**ジェネリクス(Generics)**の仕組みを実現するために使用されるもので、クラス、トレイト、メソッドにおいて、具体的な型を抽象化して再利用性と型安全性を高めるために使われます。
1. 型パラメータの基本構文
Scalaでは、クラスやメソッドの定義時に型をパラメータとして受け取ることができます。
この例では、Aが型パラメータです。Boxクラスは、任意の型Aに対して機能し、その型の値を格納・取得できます。
使用例
Box[Int]やBox[String]のように、具体的な型を指定してインスタンス化できます。
2. 型パラメータの利点
a. 型安全性の向上
コンパイル時に型がチェックされるため、型の不一致による実行時エラーを防げます。
b. 再利用性の向上
同じ構造で異なる型に対して使い回すことができ、重複したコードを減らせます。
3. 複数の型パラメータ
複数の型パラメータを指定することも可能です。
4. メソッドにおける型パラメータ
メソッド単位で型パラメータを使うこともできます。
5. 型境界(境界付き型)
型パラメータに対して**制約(境界)**を設けることも可能です。
a. 上限境界(upper bound)
この場合、CageにはAnimalかそのサブクラスしか使えません。
b. 下限境界(lower bound)
これはDogかその親クラスが使えることを意味します。
6. 型パラメータと共変・反変
Scalaの強力な型システムでは、共変(+A)、**反変(-A)**の指定によってサブタイプ関係を柔軟に定義できます。
まとめ
| 機能 | 説明 |
|---|---|
| 型パラメータ | 型を抽象化し、汎用的なクラス・メソッドを定義可能 |
| 利点 | 型安全性と再利用性の向上 |
| 境界付き型 | 使用できる型に制限を設ける(上限・下限) |
| 共変・反変 | 型の継承関係を制御して柔軟な型設計が可能 |
生成日:2025/05/04