Definire un tipo EmptyMessage
come:
message EmptyMessage {
// nothing
}
Ora analizzare il messaggio come EmptyMessage
, quindi chiamare toString()
su di esso.
Perché funziona? Bene, considera che è compatibile con le versioni precedenti per aggiungere campi a un tipo di messaggio. Quando aggiungi un campo, quindi invii un messaggio usando quel campo a un vecchio programma che non è stato creato con la conoscenza del campo, allora il campo viene trattato come "campo sconosciuto". I campi sconosciuti vengono stampati come coppie numero/valore. Ora, se inizi con EmptyMessage
e aggiungi campi, puoi ovviamente ottenere qualsiasi altro messaggio. Pertanto, tutti i tipi di messaggio sono "retrocompatibili" con EmptyMessage
. Pertanto, qualsiasi messaggio può essere analizzato come EmptyMessage
per trattare tutti i campi come campi sconosciuti.
fonte
2016-03-14 18:03:16
Non ho oggetto messaggio come ho menzionato sopra. Ho array di byte – user12384512
utilizzando la libreria google protobuf, dovresti essere in grado di costruire l'oggetto con solo la matrice di byte. perché analizzarlo da solo quando ci sono già delle biblioteche che lo fanno? –
Questa domanda originale non riguardava l'uso della libreria protobuf, ma riguardava la modalità di stampa del messaggio di tipo sconosciuto. – user12384512