我努力学习Lambda表达式,的Java 8 Lambda表达式 - 方法重载怀疑
interface MathOperartor
已运行()重载类型int和float,我敢肯定这应该是可能使用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);
}
请让我知道我在做什么错在这里,并提出修复...
更新:
好吧,所以我理解了功能接口的概念,我的问题也是关于在上面的代码中实现我想要做的事情,并且找到了几种方法来实现它。
谢谢你们每一位的宝贵答案!
您需要在该接口中只有一个抽象方法,查找功能接口。 – halil
“这个表达式的目标类型必须是一个函数接口”=>呃...类型'MathOperartor'不是[函数接口](http://docs.oracle.com/javase/specs/jls/se8 /html/jls-9.html#jls-9.8)。 – Seelenvirtuose
[Java 8中的函数接口的用途是什么?](https://stackoverflow.com/questions/36881826/what-is-use-of-functional-interface-in-java-8) – Seelenvirtuose