我有一个演员定义如下:
class nodeActor(ID: String) extends Actor
其中包含一个方法,用于在启动之前设置 actor:
def addRef(actor:ActorRef)
我这样实例化这个演员:
val node1 = system.actorOf(Props(new nodeActor("node1")), name="node1")
它返回给我一个 ActorRef。编译器不允许我在 ActorRef 上调用“addRef”,因为它是子类型的成员。所以我使用以下方法投射节点:
node1.asInstanceOf[nodeActor].addRef(link1)
这让编译器很高兴。然后在运行时我得到
java.lang.ClassCastException: akka.actor.LocalActorRef cannot be cast to ActorStressTest.nodeActor
这对我来说似乎没有意义,因为它是一个子类型,我应该能够转换为它。
Ideas?
如果你想这样做进行测试,那么在创建 actor 时你可以这样做:
import akka.testkit.TestActorRef
val actorRef = TestActorRef[MyActor]
val actor = actorRef.underlyingActor
然后你可以在 actor 上运行方法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)