一般的にはコンストラクタやメソッドを使用するとき、引数を使用してパラメータ化する
型のパラメータ化とは、それと同じようにクラスやメソッドなどで使用する型そのものをパラメータ化再利用性を高める機能である。
型パラメータ名を指定していなくても型推論でString型だったりAny型にしたりできる。
型パラメータをString型に指定しておいてString型以外の要素を渡そうとするとコンパイルエラーにできる。
elcome to Scala version 2.10.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_45).
Type in expressions to have them evaluated.
Type :help for more information.
scala> val sList = List[String]("a","b","c")
sList: List[String] = List(a, b, c)
scala> val sList = List("a","b","c")
sList: List[String] = List(a, b, c)
scala> sList.head
res0: String = a
scala> val sList = List("a","b",1)
sList: List[Any] = List(a, b, 1)
scala> val sList = List[String]("a","b",1)
<console>:7: error: type mismatch;
found : Int(1)
required: String
val sList = List[String]("a","b",1)
^