Java 从protobuf描述符获取默认实例
如果我只知道protobuf消息的描述符,如何获取其默认实例:Java 从protobuf描述符获取默认实例,java,protocol-buffers,Java,Protocol Buffers,如果我只知道protobuf消息的描述符,如何获取其默认实例: Descriptor descriptor = SomeOuterMessage.getDescriptor() .findNestedTypeByName("InnerMessageName"); Message defaultInstance = descriptor. <???> // how do I get an instance of "Inne
Descriptor descriptor = SomeOuterMessage.getDescriptor()
.findNestedTypeByName("InnerMessageName");
Message defaultInstance = descriptor. <???> // how do I get an instance of "InnerMessageName"?
描述符描述符=SomeOuterMessage.getDescriptor()
.findNestedTypeByName(“InnerMessageName”);
消息defaultInstance=描述符。//如何获取“InnerMessageName”的实例?
您可以通过类获取默认实例 比如说像这样的原型:
Message PhoneBook {
repeated Person people = 1;
}
Message Person {
required Name name = 1;
optional String phone = 2;
}
Message Name {
required String family_name = 1;
required String given_name = 2;
}
获取人员
的默认实例的代码如下:
PhoneBook phoneBook = phoneBook.getDefaultInstance();
Descriptors.Descriptor personDescriptor = phoneBook.getDescriptor().findNestedTypeByName("people");
DynamicMessage defaultPeopleInstance = DynamicMessage.newBuilder(personDescriptor).getDefaultInstanceForType().build();
assert defaultPeopleInstance == People.getDefaultInstance();