maj*_*aja 2 java protocol-buffers
如果我只知道它的描述符,如何获取 protobuf 消息的默认实例:
Descriptor descriptor = SomeOuterMessage.getDescriptor()
.findNestedTypeByName("InnerMessageName");
Message defaultInstance = descriptor. <???> // how do I get an instance of "InnerMessageName"?
Run Code Online (Sandbox Code Playgroud)
您可以通过类获取默认实例DynamicMessage。
假设原型如下:
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;
}
Run Code Online (Sandbox Code Playgroud)
获取默认实例的代码People类似于:
PhoneBook phoneBook = phoneBook.getDefaultInstance();
Descriptors.Descriptor personDescriptor = phoneBook.getDescriptor().findNestedTypeByName("people");
DynamicMessage defaultPeopleInstance = DynamicMessage.newBuilder(personDescriptor).getDefaultInstanceForType().build();
assert defaultPeopleInstance == People.getDefaultInstance();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3863 次 |
| 最近记录: |