Java将一个protobuff对象复制到其他protobuff对象

时间:2017-04-15 17:27:04

标签: java protocol-buffers

我有两个protobuff对象Source和Target,例如

message Source{
   optional string firstName = 1;
   optional string lastName = 2;
}

message Target {
   optional string firstName = 1;
   optional string lastName = 2;
}

我想将字段从Source复制到Target,我有

的解决方案
if(source.hasFirstName()) target.setFirstName(source.getFirstName());
if(source.hasLastName()) target.setLastName(source.getLastName());

上面的代码看起来很冗长。 Java 8中是否有简单的解决方案来处理这个问题?

1 个答案:

答案 0 :(得分:0)

如果您的消息相同,如提供的示例中所示,并且只有它们的名称不同,您可以将Source序列化为数组,然后将其反序列化为目标。

Target target = Target.parseFrom(source.toByteArray());

如果字段的名称和类型相同,但具有不同的数字,则可以将其作为文本派生/反序列化

Target.Builder builder = Target.newBuilder();
TextFormat.merge(source.toString(), builder);
Target target = builder.build();