5

如何使 Java 协议缓冲区类型可变?

Protoc.exe 不生成设置器?

基本上我需要创建一个对象然后更改一个字段值。

谢谢

4

3 回答 3

3

这不是图书馆的预期用途。您将在构建器阶段设置值,然后从构建器创建不可变 DTO。如果您想要不同的值:更改构建器中的值并重新生成 DTO。

或者,请注意有多个库提供对 protobuf 线路规范的支持。IIRC“protostuff”适用于可变 POJO 对象。

于 2013-04-21T07:04:01.823 回答
2

我的理解是,你不能用标准的 protoc 工具和标准的生成器插件来做到这一点。

AFAIK,您唯一的选择是编写自己的生成器(或修改现有的生成器)来满足您的需要。

或者,您可以使用“讨厌的”反射技巧来进入对象并以这种方式修改状态。

(为什么觉得创建对象后还需要修改字段值?不能直接在builder里修改字段值build再调用吗?)

于 2013-04-21T06:55:16.013 回答
2

您可以在仍然希望对象可变的任何地方简单地使用构建器。它们既有 getter 又有 setter。

于 2013-04-21T09:00:29.380 回答