Wie gehe ich mit einem Feld vom Typ „Nullable Enum“ in einer Protobuf3-Nachricht um?Java

Java-Forum
Anonymous
 Wie gehe ich mit einem Feld vom Typ „Nullable Enum“ in einer Protobuf3-Nachricht um?

Post by Anonymous »

Das Folgende sind meine Protobuf-Definitionen:

Code: Select all

enum Foo {
BAR = 0;
BAZ = 1;
}

message UpdateRequest {
string id = 1;
Foo foo = 2;
.
.
.
}
Ich benötige, dass das foo-Feld der UpdateRequest nullfähig ist. Wenn ich jedoch den Wert dieses Felds nicht festlege, wird gemäß der Protobuf-Semantik immer BAR als Standardwert ausgewählt.
Als ich mich umschaute, habe ich mehrere Möglichkeiten gefunden, damit umzugehen.
  • Fügen Sie einen zusätzlichen UNKNOWN-Wert in die Aufzählung ein und ordnen Sie ihn 0 zu, sodass dieser Wert als Standardwert anstelle von BAR verwendet wird und ich kann diesen Wert als null behandeln.

Code: Select all

enum Foo {
UNKNOWN = 0;
BAR = 1;
BAZ = 2;
}
  • Verwenden Sie das oneof-Konstrukt.
Irgendwie habe ich jedoch das Gefühl, dass beide oben genannten Ansätze eine Art Workaround sind, und ich kann keine offizielle Dokumentation finden, die die beste Vorgehensweise für die Behandlung dieses Falls erklärt.
Was ist die beste Vorgehensweise für die Behandlung dieses Anwendungsfalls?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post