以下代码:
abstract class Foo[T: ClassTag] {
def v(a: Any): Any = a match {
case _ if a.isInstanceOf[T] => Some(a)
case _ => None
}
}
在编译中产生以下内容:
Warning: abstract type T is unchecked since it is eliminated by erasure
case _ if a.isInstanceOf[T] =>
奇怪的是,案例匹配将按预期工作。有没有办法让isInstanceOf [T]知道ClassTag上下文绑定?
答案 0 :(得分:3)
我不会说这是按预期工作的:
fs
请勿使用aurelia-cli
,因为它根本不使用scala> (new Foo[String] {}).v(List(1))
res10: Any = Some(List(1)) // Not a String!
。您可以使用isInstanceOf
提取器:
ClassTag
这是所有的语法糖:
ClassTag