当我需要将类型集合传递给一个演员时,我会得到一个"未经检查的"我react
方法中的警告:
val actor = actor {
loop {
react {
case a:List[String] => // do something
}
}
}
我该如何解决这个问题?我在一个单独的类中尝试过拳击集合(但这很丑陋而且很麻烦),并且在演员接收之后只是转换集合(case a:List[_] => a.asInstanceOf[List[String]]
)并不是类型安全且危险的。
答案 0 :(得分:2)
因为JVM没有跟踪泛型的类型,所以除非检查每个元素并检查它是否为字符串,否则您无法知道List[_]
是List[String]
。事实上,你最好的选择就是将这个系列装在一个单独的课堂上。它不一定非常糟糕!
case class StringsBox(ls: List[String]) {}
//...
myactor ! StringsBox( List("these","are","strings") )
//...
react {
case StringsBox(ls) => /* Now you have your List[String] */
}