Как обрабатывать поле типа перечисления, допускающее значение NULL, в сообщении protobuf3?JAVA

Программисты JAVA общаются здесь
Anonymous
Как обрабатывать поле типа перечисления, допускающее значение NULL, в сообщении protobuf3?

Сообщение Anonymous »

Ниже приведены мои определения protobuf:

Код: Выделить всё

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

message UpdateRequest {
string id = 1;
Foo foo = 2;
.
.
.
}
Мне нужно, чтобы поле foo UpdateRequest имело значение NULL. Однако, если я не устанавливаю значение этого поля, то в соответствии с семантикой protobuf он всегда выбирает BAR в качестве значения по умолчанию.
Осмотревшись, я нашел несколько способов справиться с этим.
  • Добавьте дополнительное значение UNKNOWN в перечисление и сопоставьте его с 0, чтобы это значение использовалось в качестве значения по умолчанию вместо BAR и я могу рассматривать это значение как нулевое.

Код: Выделить всё

enum Foo {
UNKNOWN = 0;
BAR = 1;
BAZ = 2;
}
  • Используйте одну конструкцию.
Однако мне почему-то кажется, что оба вышеперечисленных подхода являются своего рода обходным путем, и я не могу найти официальную документацию, объясняющую лучшие практики для решения этого случая.
Как лучше всего обрабатывать этот вариант использования?>

Вернуться в «JAVA»