Почему Protobuf Any не находится внутри AnyProto.class
Осмотр Протобуфа от Google 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