这是ParseFromString的实现(请注意,
TextFormat::ParseFromString只需调用
TextFormat::Parser::ParseFromString一个新
Parser对象):
bool TextFormat::Parser::Parse(io::ZeroCopyInputStream* input, Message* output) { output->Clear(); return Merge(input, output);}bool TextFormat::Parser::ParseFromString(const string& input, Message* output) { io::ArrayInputStream input_stream(input.data(), input.size()); return Parse(&input_stream, output);}您可以看到
Parse只是清除了消息,然后调用
Merge。尽管协议缓冲区的Java实现没有
Parse方法,但是您可以轻松实现它:
public static void parseFromString(CharSequence input, ExtensionRegistry extensionRegistry, Message.Builder builder) throws ParseException { builder.clear(); TextFormat.merge(input, extensionRegistry, builder);}


