我的方法如下
protected override def onEvent(event: Class[_]) = event match {
case event: mydomain.Quote => println("qu")
case _ => println("eventsample" + event)
}
Run Code Online (Sandbox Code Playgroud)
控制台打印出以下内容
eventsampleclass mydomain.Quote
Run Code Online (Sandbox Code Playgroud)
我以为这会在模式匹配中被捕获
Did*_*ont 10
没有匹配,因为您的模式正在寻找Quote的实例并且您正在传递classOf[Quote],这是一个实例Class[Quote],而不是Quote.
为了匹配,你会打电话onEvent(new myDomain.Quote(...)),而不是onEvent(classOf[myDomain.Quote]).(有点不幸的是编译器接受你的第一个模式,因为它没有机会匹配类型的事件Class).
如果你想识别类[引用],你可以使用模式case c if c == ClassOf[Quote],但我没有看到任何理由不使用简单if/else