Scala 有没有一种方法可以让一个特质得到一个隐含的显式

Scala 有没有一种方法可以让一个特质得到一个隐含的显式,scala,akka,Scala,Akka,我正在尝试实现一种特性,它覆盖参与者以截获特定的消息类型,如下所示: trait MyTrait[M] extends Actor { abstract override def receive = { case msg: M => // Do Something super.receive(msg) } } 这给了我编译器警告: abstract type pa

我正在尝试实现一种特性,它覆盖参与者以截获特定的消息类型,如下所示:

trait MyTrait[M] extends Actor {

    abstract override def receive = {

            case msg: M => 
                // Do Something
                super.receive(msg)
        }
    }
这给了我编译器警告:

abstract type pattern M is unchecked since it is eliminated by erasure

我不能传递隐式类清单,因为它是一个特性而不是一个类。在仍然使用特征的情况下,有没有办法实现上述目标?

您可以在特征中添加一个抽象定义,并在以后实施:

scala> trait T[A] {
    implicit def ev: Manifest[A]
    def r: Any => Int = { case a: A => 1 case _ => 0}
  }
defined trait T

scala> class X(implicit val ev: Manifest[String]) extends T[String]
defined class X

scala> new X().r("")
res0: Int = 1

scala> new X().r(5)
res1: Int = 0

如果想要匿名实例化它,给它一个以前定义的类?所以在上面的例子中,我有一个类SomeActor扩展了Actor。我想用trait作为mixin创建一个对象:“val x=newsomeactor with MyTrait[String]”那么,你可以用MyTrait[String]{implicit val ev:Manifest[String]=Manifest[String]}