Wie komme ich mit Scala um die Typlöschung herum? Oder warum kann ich den Typparameter meiner Sammlungen nicht abrufen?

Es ist eine traurige Tatsache in Scala, dass Sie, wenn Sie eine List [Int] instanziieren, überprüfen können, ob es sich bei Ihrer Instanz um eine List handelt, und Sie können überprüfen, ob es sich bei jedem einzelnen Element um eine Int handelt, jedoch nicht um eine List [ Int], wie leicht zu überprüfen ist:

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?!

Die Option -unchecked gibt der Löschung die Schuld:

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?!

Warum ist das so und wie komme ich darum herum?

Antworten auf die Frage(11)

Ihre Antwort auf die Frage