使用此
private static void method (MyClass mc, int num){
System.out.println(mc.operation(num));
}
private static interface Exec{
public int operation(int num);
}
static abstract class MyClass implements Exec{}
我可以使用
调用该方法method(new MyClass(){
public int operation(int num) {return num*2;}
}, 15);
但是当我使用lambda method(a->a*2, 15);
时,我有2个错误:
此表达式的目标类型必须是功能接口
和
方法...不适用于参数((a) - > {},int)
答案 0 :(得分:3)
Lambdas只能实现接口,不能扩展抽象类。如果您的method
有签名
public static void method(Exec mc, int num)
那么它可能会奏效。我强烈怀疑这两个错误都是这个问题的结果。