如何在构建消息之前在protobuf中设置重复的字段?

时间:2015-03-20 15:28:47

标签: java protocol-buffers

当我得到像

这样的东西时
Message Foo{
    repeated Bar bar = 1;
}

现在我要插入Bar的xy对象。 每个都是循环创建的。

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

这是可能的还是在构建foo对象之前我是否同时需要所有xy bar字段?

2 个答案:

答案 0 :(得分:11)

当你使用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();

使用您要求的用例进行编辑。

答案 1 :(得分:1)

List<Bar> barList= new Arraylist();
barList.add(new Bar());

然后在Foo中设置Bar的列表

Foo foo =  Foo.newBuilder()
        .addAllBar(barList)
        .build;

Bar 只能设置一个值

Foo foo =  Foo.newBuilder()
        .addBar(new Bar())
        .build;