如何在java中设置google protobuf重复字段

Ang*_*gel 3 java protocol-buffers

这是我的定义

message point{
  optional float x = 1;
  optional float y = 2;
}
message test{
  repeated field point = 1;
}
Run Code Online (Sandbox Code Playgroud)

在我的example.java文件中,我试图创建一个构建器,如下所示:

for(i = 0; i < somearr.size(); i++)
{
    // I get x and y values from traversing the array 
    float x = getX;
    float y = getY;

    // now I want to set the repeated field point
}
Run Code Online (Sandbox Code Playgroud)

如何设置重复场点?

eng*_*erC 10

非常类似于这里的repeated PhoneNumber示例。

将这些消息大写将有助于代码可读性。

message Point {
  optional float x = 1;
  optional float y = 2;
}
message Test {
  repeated Point point = 1;
}
Run Code Online (Sandbox Code Playgroud)

爪哇:

Test.Builder b = Test.newBuilder();

for (i = 0; i < somearr.size(); i++) {
    float x = getX; // somehow?
    float y = getY; // ??
    b.addPoint(Point.newBuilder().setX(x).setY(y).build());
}

Test mytest = b.build();
Run Code Online (Sandbox Code Playgroud)


小智 6

List<Point> points = ...;
Test.newBuilder().addAllPoint(points);
Run Code Online (Sandbox Code Playgroud)