Можно ли определить метод для перечисления Proto? - PullRequest
1 голос
/ 07 марта 2020

Скажем, у меня есть перечисление прото-буфера operations.proto

enum Operation {
  UNSPECIFIED = 0;
  PLUS = 1;
  MINUS = 2;
  TIMES = 3;
  DIVIDE = 4;
}

Так что в моем коде Java я должен сделать что-то вроде

if (operation == Operation.PLUS) {
  return x+y;
} else if (operation == Operation.MINUS) {
  return x-y;
}
...

И я знаю, что могу добейтесь большего с «Effective Java Item 34: Use enum вместо int constants», чтобы иметь метод для типа enum типа

public enum Operation {
  PLUS {public double apply(double x, double y){return x + y;}},
  MINUS {public double apply(double x, double y){return x - y;}},
  TIMES {public double apply(double x, double y){return x * y;}},
  DIVIDE{public double apply(double x, double y){return x / y;}};
  public abstract double apply(double x, double y);
}

Однако, мой Operation является прото-перечислением вместо java enum. Я могу себе представить, что могу сопоставить прото-перечисление с перечислением Java и определить методы для перечисления Java (не уверен, что это усложняет проблему). Но есть ли умный способ добиться этого?

1 Ответ

0 голосов
/ 07 марта 2020

Нет, это не то, что позволяет DSL схемы.

Это существует для сервисов, но это такие вещи, как gRP C.

...