不明确的类级别和继承的方法级别ClassTag

时间:2014-11-19 12:12:22

标签: scala inheritance implicits

我有一个需要具有ClassTag

功能的特性
trait Foo[T] {
    def bar(a: List[T])(implicit ev: ClassTag[T]): Unit
}

现在我有一个需要扩展该特性的类,但它的ClassTag也可以用于其他方法,例如。

class MyClass[T](implicit classTag: ClassTag[T]) extends Foo[T] {
    override def bar(a: List[T])(implicit ev: ClassTag[T]): Unit = { /* do stuff */ }
    def other(p: Map[String, T]) = /* other stuff where I need the ClassTag */
}

编译时,我会得到一条错误信息:

Error:scalac: ambiguous implicit values:
both value classTag in class MyClass of type scala.reflect.ClassTag[T]
and value ev of type scala.reflect.ClassTag[T]
match expected type scala.reflect.ClassTag[T]

有没有办法可以同时使用类级别ClassTag并从父级特征覆盖方法?

1 个答案:

答案 0 :(得分:1)

您可以简单地为它们提供相同的名称。