如何使Java协议缓冲区类型可变? Protoc.exe不生成setter?

时间:2013-04-21 05:54:44

标签: java protocol-buffers

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

Protoc.exe不会生成setter?

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

由于

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

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

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

(为什么您觉得在创建对象后需要更改字段值?您不能只更改构建器中的字段值并再次调用build吗?)

答案 2 :(得分:2)

您可以在任何您仍希望对象可变的地方使用构建器。他们有吸气剂和二传手。