我来自Python,试图理解lambda表达式在Java中的工作方式是如何不同的。在Python中,可以执行以下操作:
opdict = { "+":lambda a,b: a+b, "-": lambda a,b: a-b,
"*": lambda a,b: a*b, "/": lambda a,b: a/b }
sum = opdict["+"](5,4)
如何在Java中完成类似的任务?我读过一些关于javalambda表达式的文章,似乎我必须首先声明一个接口,我不清楚您需要如何以及为什么需要这样做。在
编辑:我试着用一个自定义接口来做这个。以下是我尝试过的代码:
^{pr2}$但是,这会产生一个错误:
The target type of this expression must be a functional interface.
我应该在哪里声明接口?在
在Java 8中使用^{} 非常简单:
当然,语法比Python要复杂一点,而且在
opdict
上使用getOrDefault
可能会更好,以避免使用不存在的运算符的情况,但这至少会使问题得到解决。在如果您专门使用
^{pr2}$int
s,那么使用IntBinaryOperator
将是更好的选择,因为这将处理您必须执行的任何泛型类型。在另一种解决方案是使用枚举:
然后您可以:
^{pr2}$这不像其他解决方案那样简洁,但是使用枚举而不是
String
意味着当您在IDE中键入Operation.
时,您将看到所有可能操作的列表。在相关问题 更多 >
编程相关推荐