如何使 Java 协议缓冲区类型可变?
Protoc.exe 不生成设置器?
基本上我需要创建一个对象然后更改一个字段值。
谢谢
这不是图书馆的预期用途。您将在构建器阶段设置值,然后从构建器创建不可变 DTO。如果您想要不同的值:更改构建器中的值并重新生成 DTO。
或者,请注意有多个库提供对 protobuf 线路规范的支持。IIRC“protostuff”适用于可变 POJO 对象。
我的理解是,你不能用标准的 protoc 工具和标准的生成器插件来做到这一点。
AFAIK,您唯一的选择是编写自己的生成器(或修改现有的生成器)来满足您的需要。
或者,您可以使用“讨厌的”反射技巧来进入对象并以这种方式修改状态。
(为什么觉得创建对象后还需要修改字段值?不能直接在builder里修改字段值build
再调用吗?)
您可以在仍然希望对象可变的任何地方简单地使用构建器。它们既有 getter 又有 setter。