我正在尝试学习 Lambda 表达式,
interface MathOperartor
对于 int 和 float 类型,operate() 已重载,我确信这应该可以使用 Lambda 表达式来完成,但似乎不太清楚问题出在哪里:
public static void main(String[] args) {
LambdaLearning lb = new LambdaLearning();
MathOperartor add = (a , b )-> a + b; // error: The target type of this expression must be a functional interface
MathOperartor sub = (a , b) -> a - b; // same error
MathOperartor mul = (a , b) -> a * b; // ''
MathOperartor div = (a , b) -> a / b; // ''
System.out.println(lb.operate(10, 15, add));
System.out.println(lb.operate(10.5f, 15.5f, sub));
System.out.println(lb.operate(10, 15, mul));
System.out.println(lb.operate(10, 15, div));
}
interface MathOperartor{
public Object operate(int a, int b);
public Object operate(float a, float b);
}
private Object operate(int a, int b, MathOperartor math){
return math.operate(a,b);
}
private Object operate(float a, float b, MathOperartor math){
return math.operate(a,b);
}
请让我知道我在这里做错了什么并提出修复建议......
Update:
好的,所以我理解了这个概念功能接口,我的问题也是关于实现我在上面的代码中尝试做的事情,我找到了几种方法来做到这一点。
谢谢大家的宝贵回答!