为什么Protobuf Any不在AnyProto.class内

时间:2018-11-27 19:57:19

标签: java protocol-buffers avro protobuf-java

检查Google的Protobuf any.protohttps://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/any.proto),可以看到以下选项:
option java_outer_classname = "AnyProto";
为什么然后Any.class中的AnyProto不是protobuf-java-x.x.x.jar的内部类(至少对于版本3.2.0和3.6.1如此)

上下文:
这个问题的原因是我正在使用avro-protobuf将avro消息转换为Protobuf,并且该库查看Protobuf模式FileDescriptor来查找需要实例化的Protobuf类。当查找Any的文件描述符时,由于上述com.google.protobuf.AnyProto$Any,此库尝试实例化java_outer_classname。在我看来,图书馆正在做正确的事情。 这是依靠此元数据实例化该类的代码: https://github.com/apache/avro/blob/2bbb99602e9e925058ead86fc8ac4e27055b05d6/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtobufData.java#L225

0 个答案:

没有答案