2016-02-12 7 views
0

Используя этотлямбда-функция не работает

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); 

, но когда я использую лямбда method(a->a*2, 15); у меня есть 2 ошибки:

Целевой тип этого выражения должен быть функциональным интерфейсом

и

метод ... не применяется для аргументов ((а) -> {}, Int)

ответ

3

Лямбда может реализовать только интерфейсы, они не может расширить абстрактные классы. Если у вашего method была подпись

тогда это, вероятно, сработало. Я сильно подозреваю, что обе ошибки являются результатом этой проблемы.

Смежные вопросы