L'examen d'une protobuf message - comment obtenir les valeurs de champ par son nom?

Je semble incapable de trouver un moyen pour vérifier la valeur d'un champ à l'intérieur d'un protobuf message sans y faire référence explicitement son getter.

- Je voir des exemples autour de que de rendre l'usage de Descriptors.FieldDescriptor instances pour atteindre l'intérieur de la carte de message, mais ils sont soit itérateur ou piloté par le numéro du champ.

Une fois que j'ai la carte:

Map<Descriptors.FieldDescriptor, Object> allFields = myMsg.getAllFields();

comment puis-je obtenir la valeur du champ "fieldXyz"?

Je sais que je peux utiliser myMsg.getFieldXyz(), mais ce n'est pas utilisable de manière systématique.

Si il n'y a aucun moyen d'accéder à des valeurs de champ par leurs noms, je voudrais savoir quelle est la logique derrière ce choix. J'ai peut-être encore à comprendre la protobuf "philosophie" 🙂