2013-04-21 30 views

回答

3

那不是的預期用途圖書館;您可以在構建器階段設置值,然後從構建器創建不可變的DTO。如果您需要不同的值:更改構建器中的值並重新生成DTO。

或者,請注意,有多個庫提供對protobuf線規範的支持。 IIRC「protostuff」適用於可變POJO對象。

2

我的理解是,你不能用標準protoc工具和標準的生成插件做到這一點。

AFAIK,你唯一的選擇是編寫你自己的發電機(或修改現有的發電機)來做你所需要的。

或者,您可以使用「討厭」反射技巧來達到對象並修改狀態。

(爲什麼你覺得你需要創建對象後更改字段值?你就不能更改生成器中的字段值並再次調用build?)

2

你可以簡單地在任何你想讓對象變爲可變的地方使用構建器。他們既有獲得者又有獲得者。

+1

我從來沒有想到,即使在使用Java protobufs和C++ protobufs幾年後,抱怨他們之間的哲學差異。 – 2014-06-06 22:43:24