如何使Java协议缓冲区类型可变?
Protoc.exe不会生成setter?
基本上我需要创建一个对象然后更改字段值。
由于
答案 0 :(得分:3)
这不是图书馆的预期用途;您可以在构建器阶段设置值,然后从构建器创建不可变DTO。如果需要不同的值:更改构建器中的值并重新生成DTO。
或者,请注意,有多个库提供对protobuf线规范的支持。 IIRC“protostuff”适用于可变的POJO对象。
答案 1 :(得分:2)
我的理解是你不能用标准的protoc工具和标准的生成器插件来做到这一点。
AFAIK,您唯一的选择是编写您自己的生成器(或修改现有的生成器)以满足您的需求。
或者,您可以使用“讨厌的”反射技巧来触及对象并以此方式修改状态。
(为什么您觉得在创建对象后需要更改字段值?您不能只更改构建器中的字段值并再次调用build
吗?)
答案 2 :(得分:2)
您可以在任何您仍希望对象可变的地方使用构建器。他们有吸气剂和二传手。