Протоколные буферы имеют довольно мощное отражение. Взгляните на дескрипторы сообщений здесь .
Дескрипторы сообщений содержат всю информацию о конкретном типе сообщения, поэтому вы должны быть в состоянии выяснить все возможные поля оттуда. Вы можете получить дескриптор непосредственно из прототипа сообщения, используя:
your_proto_message.getDescriptorForType()
или используя
ProtoMessageClass.getDescriptor()
Если представление файла .proto - это все, что вам нужно, вы можете просто вызвать .toProto()
в дескрипторе. Подробнее здесь .
Итак, подведем итог:
ProtoMessageClass.getDescriptor().toProto().toString()