2017-04-15 90 views
0

我有2 protobuff對象源和目標例如Java的一個protobuff對象複製到其他protobuff對象

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

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

我要複製從源領域的目標,解決方案,我有

if(source.hasFirstName()) target.setFirstName(source.getFirstName()); 
if(source.hasLastName()) target.setLastName(source.getLastName()); 

上面的代碼看起來很冗長。 Java 8中有簡單的解決方案來處理這個問題嗎?

回答

0

如果你的消息是相同的,就像在提供的例子中一樣,只有它們的名稱不同,你可以將Source序列化爲一個數組,然後將它反序列化爲目標。

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

如果字段的名稱和類型是相同的,但有不同的號碼,你可以derialize /反序列化文本

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