gpt4 book ai didi

java - 使用枚举值来表示二元运算符或函数

转载 作者:行者123 更新时间:2023-12-02 00:52:29 34 4
gpt4 key购买 nike

我正在寻找一种优雅的方式来使用 Java 枚举中的值来表示操作或函数。我的猜测是,因为这是 Java,所以不会有一个好的方法来做到这一点,但无论如何,这里就是这样。我的枚举看起来像这样:

public enum Operator {
LT,
LTEQ,
EQEQ,
GT,
GTEQ,
NEQ;

...
}

哪里LT意味着< (小于),LTEQ意味着<= (小于或等于)等等 - 你明白了。现在我想实际使用这些枚举值来应用运算符。我知道我可以只使用一大堆 if 语句来做到这一点,但这是丑陋的面向对象的方式,例如:

int a = ..., b = ...;
Operator foo = ...; // one of the enum values
if (foo == Operator.LT) {
return a < b;
}
else if (foo == Operator.LTEQ) {
return a <= b;
}
else if ... // etc

我想要做的是删除这个结构并使用某种一流的函数甚至多态性,但我不太确定如何做。像这样的东西:

int a = ..., b = ...;
Operator foo = ...;
return foo.apply(a, b);

甚至

int a = ..., b = ...;
Operator foo = ...;
return a foo.convertToOperator() b;

但据我所知,我认为不可能返回运算符或函数(至少,在不使用某些第三方库的情况下)。有什么建议吗?

最佳答案

这不仅是可能的,而且在经常引用的 Effective Java, Second Edition by Josh Bloch 中用作示例。 我不想侵犯他的版权,会在网上寻找类似的例子...

好的,我记得的代码可以在我之前链接的网站上免费获得。单击“下载本书中使用的代码示例”,然后查看 effective2/examples/Chapter6/Item30/Operation.java

关于java - 使用枚举值来表示二元运算符或函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2427975/

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