我一直在尝试使用java中的protobuf构造/填充子消息/消息。 更具体地说,我有分机的分机号码以及分机注册表。
有没有办法通过用给定值填充字段来构造消息?
在 C++ 中,我知道有一种方法可以通过使用反射来做到这一点。通过使用反射接口(interface),您可以获取字段描述符(FindKnownExtensionByNumber()),然后构造消息(MutableMessage(message,字段描述符))。
Java中有类似的方法吗?
最佳答案
开头为:
Message.Builder parent;
int extensionNumber;
ExtensionRegistry registry;
你可以这样做:
// Look up the extension.
ExtensionRegsitry.ExtensionInfo info =
registry.findExtensionByNumber(
parent.getDescriptorForType(), extensionNumber);
if (info == null) {
throw new IllegalArgumentException("no such extension");
}
// Make a new builder for a message of the extension's type.
Message.Builder builder =
info.defaultInstance.newBuilderForType();
// ... fill in builder however you want ...
// Insert the new sub-message into the parent.
parent.setField(info.descriptor, builder.build());
关于java Protocol Buffer - 使用给定的字段号和扩展注册表填充子消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19967730/