我有两个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中是否有简单的解决方案来处理这个问题?
答案 0 :(得分:0)
如果您的消息相同,如提供的示例中所示,并且只有它们的名称不同,您可以将Source序列化为数组,然后将其反序列化为目标。
Target target = Target.parseFrom(source.toByteArray());
如果字段的名称和类型相同,但具有不同的数字,则可以将其作为文本派生/反序列化
Target.Builder builder = Target.newBuilder();
TextFormat.merge(source.toString(), builder);
Target target = builder.build();