protobuf repeated string 赋值
原创
©著作权归作者所有:来自51CTO博客作者编程牧马人的原创作品,请联系作者获取转载授权,否则将追究法律责任
问题
protobuf 文件
message InviteJoinGroupInner{
optional string invitor = 1; // 邀请者
optional string groupId = 2; // 群组id
optional string declared = 3; // 邀请理由
repeated string members = 4; // 邀请的成员
}
java 中 new一个InviteJoinGroup消息
// 35 邀请加入群组
List<String> members = new ArrayList<String>();
members.add("test1");
members.add("test2");
InviteJoinGroup.InviteJoinGroupInner inviteJoinGroupInner = InviteJoinGroup.InviteJoinGroupInner
.newBuilder()
.setGroupId("g53102464")
.setDeclared("邀请加入群组")
.setInvitor("im13100000003")
.addAllMembers(members)
.setConfirm(1)
.build();
再给repeated 赋值时不能使用setMembers() 方法,而是使用AllMembers(new List<>)
message point{
optional float x = 1;
optional float y = 2;
}
message test{
repeated field point = 1;
}
方法一
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();
方法二:
List<Point> points = ...;
Test.newBuilder().addAllPoint(points);