Protobuf:如何使用其他消息中的所有字段填充一条消息

时间:2016-08-26 03:35:03

标签: protocol-buffers

我有两条消息,一条是空的,另一条是满的,我想用完整的字段填充空字段,就像BeanUtils.copyProperties(dest, orig)一样。似乎没有API让我做这样的事情,任何想法?

1 个答案:

答案 0 :(得分:1)

您可以使用Builder方法创建从现有Message初始化的新toBuilder()

MyMessage.Builder builder = myMessage.toBuilder();

这通常用于更改一个字段,例如:

MyMessage newMessage = myMessage.toBuilder().setFoo(123).build();

如果您已经有Builder并且想要将现有信息中的字段复制到其中,则可以使用mergeFrom()

builder.mergeFrom(myMessage);

请注意,未设置myMessage的字段将保持不变,因此名称为“merge”。

编辑:如果你问如何将字段复制到现有的消息对象中 - 即不是建设者 - 答案就是你不能。消息对象是不可变的,就像Java的String类型一样。