我有一个被定义如下的演员:
class nodeActor(ID: String) extends Actor
这个方法被用来在演员开始前设置演员:
def addRef(actor:ActorRef)
我这样实例化这个演员:
val node1 = system.actorOf(Props(new nodeActor("node1")), name="node1")
该方法将返回一个ActorRef。由于ActorRef是子类型的成员,编译器不允许我在ActorRef上调用"addRef"。因此,我使用以下方式转换节点:
node1.asInstanceOf[nodeActor].addRef(link1)
这可以让编译器保持良好的状态。然后在运行时,我得到:
java.lang.ClassCastException: akka.actor.LocalActorRef cannot be cast to ActorStressTest.nodeActor
对我来说,这甚至似乎毫无意义,因为它是一个子类型,我应该能够将其转换为它。
有什么想法吗?
node1
是一个ActorRef
,它像指向实际 Actor 实例的指针。你的nodeActor
实例被隐藏在 Akka 系统中,不应直接与之交互。 - Dylan