我有一个这样定义的演员:
class nodeActor(ID: String) extends 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
这对我来说似乎没有意义,因为它是一个子类型,我应该能够转换它。
想法?