Скажем, у меня есть перечисление прото-буфера 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 (не уверен, что это усложняет проблему). Но есть ли умный способ добиться этого?