2017-03-07 40 views
0

我正在学习Akka,并且在akka文档中,他们已经为演员和消息使用了静态类,所以我想知道为什么我们在akka中创建Actor和消息作为静态类。并且这是我所知道的: - 我们不能创建顶层静态类,因为我们只能创建一个内部静态类,而一个内部静态类实例不会链接到特定的封闭类实例。这意味着多个实例共享相同的静态类实例。所以如果我们创建静态Actor和消息,那么每个静态类只会有一个实例。为什么我们将akka中的Actor和消息创建为静态类?

+0

请修改英文并再次询问 - 我们无法创建顶层静态类,并且内部静态类实例未链接到特定的封闭类实例,这没有任何意义。 – Snickers3192

+0

@ Snickers3192我想我已经清除了我的观点.. – Partish

+0

我仍然认为你没有道理,你问你为什么不能使用非静态内部类作为演员? – Snickers3192

回答

1

您不必将消息创建为静态类。

有它主要有两个原因:

一个是什么士力架被提,即我们要的消息一成不变,它是sintactically很容易通过静态类Java中这样做。你可以通过将所有字段设置为private和/或final来做到这一点,但这可能会使你的序列化/反序列化更加复杂(如果你正在使用Jackson,@JsonCreator ......)。

第二个是我将消息声明为接受它们的actor的内部类,你建立了两者之间的语义关系,使得更容易知道actor是接受什么消息。

但是,您可以轻松忽略所有这些建议并将它们构建为普通类,并且您自己确保它们不会被其他方式的任何人修改。

相关问题