Protobuf为什么使用构建器来构建数据?

时间:2019-12-11 10:46:30

标签: java protocol-buffers builder

在Java中,要创建数据结构,我们需要像

Builder builder=Data.newBuilder();
builder.setField(...);
...
Data=builder.build();

为什么不只为getter()的每个字段提供setter()Data?喜欢:

Data data=new Data();
data.setFiled(...);

1 个答案:

答案 0 :(得分:2)

Protobuf使用构建器来生成Message对象,因为the message objects themselves are immutable

  

消息对象[...]是不可变的,就像Java字符串一样。要构造消息对象,您需要使用构建器。

这可能是 完成的操作,以允许仅在已知Message对象不变的情况下才能进行优化。