我有两条消息,一条是空的,另一条是满的,我想用完整的字段填充空字段,就像BeanUtils.copyProperties(dest, orig)
一样。似乎没有API让我做这样的事情,任何想法?
答案 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类型一样。