gpt4 book ai didi

java - 是否可以在 Proto 枚举上定义方法?

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:48 25 4
gpt4 key购买 nike

假设我有一个 Proto 缓冲区枚举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:使用枚举而不是 int 常量”做得更好,在枚举类型上有一个方法,例如

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 枚举。我可以想象我可以将原始枚举映射到 Java 枚举并在 Java 枚举上定义方法(不确定这是否使问题过于复杂)。但有什么聪明的方法可以实现这一目标吗?

最佳答案

不,这不是架构 DSL 允许的事情。

这存在于服务中,但那是在考虑像 gRPC 这样的东西。

关于java - 是否可以在 Proto 枚举上定义方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60573798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com