Как обрабатывать поле типа перечисления, допускающее значение 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;
}
  • Используйте одну конструкцию.
Однако мне почему-то кажется, что оба вышеперечисленных подхода являются своего рода обходным путем, и я не могу найти официальную документацию, объясняющую лучшие практики для решения этого случая.
Как лучше всего обрабатывать этот вариант использования?>

Подробнее здесь: https://stackoverflow.com/questions/665 ... f3-message
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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