Gob*_*ins 8 java protocol-buffers
当我得到类似的东西
Message Foo{
repeated Bar bar = 1;
}
Run Code Online (Sandbox Code Playgroud)
现在我想插入Bar的xy对象.每个都是在循环中创建的.
for(i=0; i < xy ; i++){
//Add Bar into foo
}
//Build foo after loop
Run Code Online (Sandbox Code Playgroud)
这是可能的还是在构建foo对象之前我是否同时需要所有xy bar字段?
Ven*_*nki 14
当你使用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();
Run Code Online (Sandbox Code Playgroud)
要添加单个对象,您可以执行以下操作.
Bar bar = new Bar();
builder.addBar(bar);
builder.build();
Run Code Online (Sandbox Code Playgroud)
使用您要求的用例编辑.
小智 5
List<Bar> barList= new Arraylist();
barList.add(new Bar());
Run Code Online (Sandbox Code Playgroud)
然后在Foo中设置Bar的列表
Foo foo = Foo.newBuilder()
.addAllBar(barList)
.build;
Run Code Online (Sandbox Code Playgroud)
您只能为 Bar 设置一个值
Foo foo = Foo.newBuilder()
.addBar(new Bar())
.build;
Run Code Online (Sandbox Code Playgroud)