Java 为什么我们在akka中创建参与者和消息作为静态类?

Java 为什么我们在akka中创建参与者和消息作为静态类?,java,akka,Java,Akka,我正在学习Akka和Akka文档,他们使用静态类作为参与者和消息,所以我想知道为什么我们在akka中创建参与者和消息作为静态类。这就是我所知道的:-我们不能创建顶级静态类,因为我们只能创建内部静态类,而内部静态类实例没有链接到特定的封闭类实例。这意味着多个实例共享同一个静态类实例。所以,如果我们创建的是静态的参与者和消息,那么每个静态类只有一个实例 您不必将消息创建为静态类 这主要有两个原因: 一个是Snickers提到的,即我们希望使消息不可变,而且在Java中通过静态类实现这一点实际上更容易

我正在学习Akka和Akka文档,他们使用静态类作为参与者和消息,所以我想知道为什么我们在akka中创建参与者和消息作为静态类。这就是我所知道的:-我们不能创建顶级静态类,因为我们只能创建内部静态类,而内部静态类实例没有链接到特定的封闭类实例。这意味着多个实例共享同一个静态类实例。所以,如果我们创建的是静态的参与者和消息,那么每个静态类只有一个实例

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

这主要有两个原因:

一个是Snickers提到的,即我们希望使消息不可变,而且在Java中通过静态类实现这一点实际上更容易。如果不这样做,可以将所有字段设置为private和/或final,但如果使用Jackson,这可能会使序列化/反序列化@JsonCreator更加复杂

第二个是,我将消息声明为接受它们的参与者的内部类,在这两者之间建立语义关系,从而更容易知道哪个参与者接受什么消息


但是你可以很容易地忽略所有这些建议,将它们构建为普通类,你自己也可以确保它们不会被任何人以其他方式修改。

请修改英语并再次询问-我们无法创建顶级静态类,而且内部静态类实例未链接到特定的封闭类实例,没有意义。@Snickers3192我想现在我已经澄清了我的观点。我仍然认为你没有意义,你是在问为什么不能使用非静态的内部类作为演员?假设你是这么问的,这是因为从内部类创建的参与者将有权访问其相应封闭类中的成员,该封闭类将构成非静态内部类的共享状态,打破了将状态限制在演员内部的演员模式。我正在关注akka文档,在akka入门中,他们使用静态创建了每个演员和消息@Snickers3192