Java google protobuffer如何在proto文件中定义列表列表?
我有一个具有列表字段列表的类,如下所示:Java google protobuffer如何在proto文件中定义列表列表?,java,protocol-buffers,Java,Protocol Buffers,我有一个具有列表字段列表的类,如下所示: public class MyClass{ private List<List<String>> } 公共类MyClass{ 私人名单 } 如何在proto文件中定义它 您可以在名为message的原型文件中声明自己的“类型” 如果您想声明一个列表,您应该使用repeated关键字 将这两者结合起来,我们可以: message ListOfListsOfStrings { repeated ListOfStrin
public class MyClass{
private List<List<String>>
}
公共类MyClass{
私人名单
}
如何在proto文件中定义它
message ListOfListsOfStrings {
repeated ListOfStrings listOfStrings=1;
}
message ListOfStrings {
repeated string strings=2;
}
然后,您可以使用ListOfListOfStrings,因为您的原型中的消息是适当的。我也在想同样的事情,我知道我可以:
流
syntax = "proto3";
import "google/protobuf/empty.proto";
message Dummy {
string foo = 1;
string bar = 2;
}
message DummyList {
repeated Dummy dummy = 1;
}
service DummyService {
rpc getDummyListWithStream(google.protobuf.Empty) returns (stream Dummy) {}
rpc getDummyListWithRepeated(google.protobuf.Empty) returns (DummyList) {}
}
那么,哪一个
通常,如果您的用例允许客户机处理
每次传入一条消息,流是更好的选择。如果
您的客户端将一直处于阻塞状态,直到所有消息到达并发送
然后对它们进行聚合处理,重复字段可能会被删除
适当,但即使在这种情况下,流也会同样工作
除了失去一些潜在的压缩性
此处引用:协议缓冲区没有任何类型的列表。但列表是字符串的重复值。因此,我们可以创建一条具有字符串输入的消息,并使用另一条消息中的重复关键字调用该消息 比如说
message person{
repeated nameList list = 1;
}
message nameList{
string name = 1;
}