Можно ли написать интерфейс Java, из которого вы могли бы создать анонимный класс, но для которого вы не можете создать лямбда-выражение? - PullRequest
1 голос
/ 23 апреля 2020

Можно ли написать Java интерфейс, из которого вы могли бы создать анонимный класс, но для которого вы не можете создать лямбда-выражение?

Почему или почему нет ???

1 Ответ

4 голосов
/ 23 апреля 2020

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

JLS 15.27. Лямбда-выражения говорит:

Оценка лямбда-выражения создает экземпляр функционального интерфейса ( §9.8 ).

JLS 9,8. Функциональные интерфейсы говорят:

A функциональный интерфейс - это интерфейс, который имеет только один абстрактный метод (помимо методов Object) и, таким образом, представляет один Контракт функции.

Так что если вы хотите интерфейс Java, для которого вы не можете создать лямбда-выражение, сделайте в интерфейсе 2 или более абстрактных метода.

Анонимные классы все еще может реализовать такой интерфейс, потому что они поддерживают реализацию более чем одного метода.

...