Type Class(型クラス) とは型の性質を表現するためのクラスで、Haskellなどの関数型言語では古くから使われています。型クラスは、アルゴリズムとアルゴリズム中で使うデータ型の結合を緩やかにする、あるいは、アルゴリズム中で使うデータと実際のデータ型の型合わせをするために使われます。 例題 例えば、区間データ(start, end)を保持するためのIntervalHolderを考えてみます。区間を保持するという意味では汎用的に書けそうなので、区間をAとしてGenericなクラスとして表現します。 class IntervalHolder[A] { private var holder = Map[Int, A]() def +=(e:A) { holder += e.start -> e // コンパイルエラー。Aはstartを持つ型ではない } } Aにはstartというパラメー