Non riesco a trovare un modo per verificare il valore di un campo all'interno di un messaggio protobuf senza invocare esplicitamente il suo getter.Esaminare un messaggio protobuf: come ottenere i valori del campo per nome?
Vedo esempi in giro che rendono l'utilizzo delle istanze Descriptors.FieldDescriptor
da raggiungere all'interno della mappa messaggi, ma sono basate su iteratore o guidate dal numero di campo.
Una volta che ho la mappa:
Map<Descriptors.FieldDescriptor, Object> allFields = myMsg.getAllFields();
come posso ottenere il valore di campo "fieldXyz"
?
So che posso utilizzare myMsg.getFieldXyz()
, ma questo non è utilizzabile in modo sistematico.
Se non c'è modo di accedere ai valori di campo con il loro nome, mi piacerebbe sapere qual è la logica alla base di questa scelta. Forse devo ancora capire la "filosofia" protobuf :-)
Questo sta andando in una direzione promettente. Come faccio a sapere in quale classe Java dovrei lanciare l'oggetto? Guardando l'API vedo solo metodi che restituiscono 'JavaType',' Type' e simili. –