2017-03-07 58 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是接受什麼消息。

但是,您可以輕鬆忽略所有這些建議並將它們構建爲普通類,並且您自己確保它們不會被其他方式的任何人修改。

相關問題