web-dev-qa-db-ja.com

メッセージを作成する前にprotobufに繰り返しフィールドを設定するにはどうすればよいですか?

私が何かを得たとき

Message Foo{
    repeated Bar bar = 1;
}

ここで、Barのxyオブジェクトを挿入します。それぞれがループで作成されます。

for(i=0; i < xy ; i++){
    //Add Bar into foo
}
//Build foo after loop

これは可能ですか、それともfooオブジェクトを作成する前にすべてのxyバーフィールドを同時に必要としますか?

9
Gobliins

Protocコマンドを使用してJavaオブジェクトを生成すると、独自のビルダーメソッドを持つFooオブジェクトが作成されます。

あなたはこのようなことをすることになります

//Creates the builder object 
Builder builder = Package.Foo.newBuilder();
//populate the repeated field.
builder.addAll(new ArrayList<Bar>());
//This should build out a Foo object
builder.build(); 

個々のオブジェクトを追加するには、次のようにします。

    Bar bar = new Bar();
    builder.addBar(bar);
    builder.build();

リクエストしたユースケースで編集しました。

13
Venki