久しぶりにプログラミングネタ。 背景 List[Int]もList[String]もバイトコードでは同じ type erasureについて知ってる人は飛ばしてOK。 知らない人向けに簡単に説明すると、Scalaでは(Javaでも同じだけど)以下の様なメソッドのオーバーロードは定義出来ない。理由はList[String]とList[Int]がバイトコードレベルでは同じなので、2つのfooメソッドが同一のシグネチャになるため。詳しくは「type erasure」や「型消去」でググって欲しい。 // won't compile class C { def foo(list: List[Int]): SomeResult = { // ... } def foo(list: List[String]): SomeResult = { // ... } } 解決方法 一応、解決方法はいくつか思いつい

