鉴于此代码:
for {
evListeners <- eventListeners.get(manifest.erasure.asInstanceOf[Class[Any]])
listener <- evListeners
} listener.asInstanceOf[A => Unit].apply(event)
如何将其转换为方法调用?我尝试了这个,但它抛出了一个错误,而上面没有:
val listeners = eventListeners.get(manifest.erasure.asInstanceOf[Class[Any]])
listeners.foreach(_.asInstanceOf[A => Unit].apply(event))
答案 0 :(得分:3)
假设eventListeners
是某种类型的Map[Class[Any],Seq[Any]]
,您必须添加一个foreach
来电,因为该地图上的get
会为您提供Option[Seq[Any]]
:
val evListeners = eventListeners.get(manifest.erasure.asInstanceOf[Class[Any]])
evListeners.foreach(_.foreach(_.asInstanceOf[A => Unit].apply(event)))