協議緩衝區編譯器生成的消息類是不可變的。消息類包含適當的setter方法,但沒有getter方法。此約束不適用於其他序列化技術,如Java二進制序列化,XML,JSON等。爲什麼協議緩衝區編譯器生成的消息類都是不可變的?
根據我的理解,不可變性在進行併發編程時有用。不變性可能有助於實現線程安全。但是,我認爲,這不是協議緩衝區的原因。
什麼可能是使消息類不可變的原因?
閱讀協議緩衝區文檔後,似乎上述規定僅適用於Java(至少),而不適用於C++和其他支持的平臺/語言。
注:這個問題只是爲了滿足我的好奇心。
謝謝。
我剛開始學習protobuf。由於我的好奇心,我問了這個問題。由於消息類的不變性,我沒有面臨任何阻塞。我應該在問題中提到它。 –
這不回答基本問題。他們爲什麼選擇讓它們在java中不可變而不在C++中? – Thomas
@Thomas因爲這是一個非常常見的Java語言 –