2017-04-15 1 views
0

に1つのprotobuffオブジェクトをコピーIまし例えば2 protobuffオブジェクトのソースおよびターゲットJavaは、他の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(); 
関連する問題