我有一个需要具有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并从父级特征覆盖方法?
答案 0 :(得分:1)
您可以简单地为它们提供相同的名称。