我一直在为我的 Java 项目使用协议缓冲区。我发现 protobuf 对象的解析器解析其他 Protobuf 数据并且不会引发异常。相反,它返回没有任何数据的解析器类型的对象(不是默认实例)
下面是我的测试原型文件
option java_package = "tester";
option java_outer_classname = "TestProto";
message A{
string message = 1;
}
message B{
int64 id = 1;
}
下面是我的测试代码
TestProto.A a = TestProto.A.newBuilder().setMessage("My Test Message").build();
TestProto.B b = TestProto.B.getDefaultInstance().getParserForType().parseFrom(a.toByteString());
System.out.println("Is default instnace :" + (b.getDefaultInstanceForType() == b));
此代码正常工作,结果为“假”。
我无法理解这种行为,我需要一种情况,我必须解析一些序列化的 protobuf 对象,如果一个解析器失败,我必须尝试另一个解析器。我该如何解决这个问题。
谢谢。