我的方法如下
protected override def onEvent(event: Class[_]) = event match {
case event: mydomain.Quote => println("qu")
case _ => println("eventsample" + event)
}
控制台打印出以下内容
eventsampleclass mydomain.Quote
我认为这会在模式匹配中被捕获
答案 0 :(得分:10)
没有匹配,因为您的模式正在寻找Quote的实例,而您正在传递classOf[Quote]
,这是Class[Quote]
的实例,而不是Quote
。
要匹配,您需要拨打onEvent(new myDomain.Quote(...))
,而不是onEvent(classOf[myDomain.Quote])
。 (有点不幸的是编译器接受了你的第一个模式,因为它没有机会匹配Class
类型的事件。)
如果您想识别班级[引用],可以使用模式case c if c == ClassOf[Quote]
,但我认为没有任何理由不使用简单的if
/ else
< / p>