Wygląda na to, że nie mogę znaleźć sposobu na sprawdzenie wartości pola wewnątrz komunikatu protobuf bez jawnego wywoływania jego funkcji pobierającej.Badanie komunikatu protobuf - jak uzyskać wartości pól według nazwy?
Widzę przykłady, które powodują użycie instancji Descriptors.FieldDescriptor
, aby dotrzeć do mapy wiadomości, ale są one oparte na iteratorze lub są sterowane przez numer pola.
Raz mam mapę:
Map<Descriptors.FieldDescriptor, Object> allFields = myMsg.getAllFields();
jaki sposób można uzyskać wartość pola "fieldXyz"
?
Wiem, że mogę używać myMsg.getFieldXyz()
, ale nie można tego użyć w sposób systematyczny.
Jeśli nie ma sposobu, aby uzyskać dostęp do wartości pól według ich nazw, chciałbym wiedzieć, jakie jest uzasadnienie tego wyboru. Być może muszę jeszcze zrozumieć "filozofię" protobuf :-)
To idzie w obiecującym kierunku. Jak mogę się dowiedzieć, do której klasy Java powinienem oddać obiekt? Patrząc na API widzę tylko metody zwracające 'JavaType',' Type' i podobne. –