Почему Protobuf Any не находится внутри AnyProto.class - PullRequest
0 голосов
/ 27 ноября 2018

Проверяя Google Protobuf any.proto (https://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, и эта библиотека просматривает FileDescriptor схемы Protobuf, чтобы найти класс 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

...