Это печальный факт жизни в Scala, что если вы создаете экземпляр List [Int], вы можете проверить, что ваш экземпляр является List, и вы можете проверить, что любой его отдельный элемент является Int, но не тот это List [Int], что легко проверить:
scala> List(1,2,3) match {
     | case l : List[String] => println("A list of strings?!")
     | case _ => println("Ok")
     | }
warning: there were unchecked warnings; re-run with -unchecked for details
A list of strings?!
Параметр -unchecked ставит вину прямо на стирание типа:
scala>  List(1,2,3) match {
     |  case l : List[String] => println("A list of strings?!")
     |  case _ => println("Ok")
     |  }
<console>:6: warning: non variable type-argument String in type pattern is unchecked since it is eliminated by erasure
        case l : List[String] => println("A list of strings?!")
                 ^
A list of strings?!
Почему это и как мне обойти это?
