Scala isInstanceOf [T]函数无法使用有界ClassTag / TypeTag

时间:2016-05-17 00:09:47

标签: scala context-bound

以下代码:

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上下文绑定?

1 个答案:

答案 0 :(得分:3)

我不会说这是按预期工作的:

fs

请勿使用aurelia-cli,因为它根本不使用scala> (new Foo[String] {}).v(List(1)) res10: Any = Some(List(1)) // Not a String! 。您可以使用isInstanceOf提取器:

ClassTag

这是所有的语法糖:

ClassTag