Лямбда-выражения могут использоваться только для реализации функциональных интерфейсов, т. Е. Интерфейсов только с одним абстрактным методом.
JLS 15.27. Лямбда-выражения говорит:
Оценка лямбда-выражения создает экземпляр функционального интерфейса ( §9.8 ).
JLS 9,8. Функциональные интерфейсы говорят:
A функциональный интерфейс - это интерфейс, который имеет только один абстрактный метод (помимо методов Object
) и, таким образом, представляет один Контракт функции.
Так что если вы хотите интерфейс Java, для которого вы не можете создать лямбда-выражение, сделайте в интерфейсе 2 или более абстрактных метода.
Анонимные классы все еще может реализовать такой интерфейс, потому что они поддерживают реализацию более чем одного метода.