Какой вариант использования функционального интерфейса, кроме разных реализаций, использующих лямбда-выражения? - PullRequest
0 голосов
/ 11 июля 2019

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

Вот базовый пример для функционального интерфейса:

/*Basic example for Functional interface with Lambda expression*/

public class Lambda_test {

    /*
     * Functional Interface annotation will not allow to declare more than one
     * abstract method which is obvious for the concept
     */

    @FunctionalInterface
    interface NameTest {

        // One abstract method
        abstract String MyName(String name);


    }

    public static void main(String[] args) {

        NameTest nametest = (name) -> "Ashwin " + name + "!";

        System.out.println("My name is " + nametest.MyName("Savaj"));

    }

}

1 Ответ

1 голос
/ 11 июля 2019

В соответствии со спецификацией Java https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html

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

Поскольку методы по умолчанию имеют реализацию, они не являются абстрактными.

В случае @FunctionalInterface:
Компилятор выдаст сообщение об ошибке, если:

  1. Тип является типом интерфейса, а не типом аннотации, перечислением или классом.
  2. Аннотированный тип удовлетворяет требованиям функционального интерфейса.
...