logo

Функционални интерфейси на Java

Интерфейс, който съдържа точно един абстрактен метод, е известен като функционален интерфейс. Може да има произволен брой статични методи по подразбиране, но може да съдържа само един абстрактен метод. Може също така да декларира методи на обектен клас.

Функционалният интерфейс е известен също като интерфейси с единичен абстрактен метод или SAM интерфейси. Това е нова функция в Java, която помага за постигане на подход на функционално програмиране.

размер на текст латекс

Пример 1

 @FunctionalInterface interface sayable{ void say(String msg); } public class FunctionalInterfaceExample implements sayable{ public void say(String msg){ System.out.println(msg); } public static void main(String[] args) { FunctionalInterfaceExample fie = new FunctionalInterfaceExample(); fie.say('Hello there'); } } 
Тествайте сега

Изход:

 Hello there 

Един функционален интерфейс може да има методи от клас обекти. Вижте в следния пример.

Пример 2

 @FunctionalInterface interface sayable{ void say(String msg); // abstract method // It can contain any number of Object class methods. int hashCode(); String toString(); boolean equals(Object obj); } public class FunctionalInterfaceExample2 implements sayable{ public void say(String msg){ System.out.println(msg); } public static void main(String[] args) { FunctionalInterfaceExample2 fie = new FunctionalInterfaceExample2(); fie.say('Hello there'); } } 
Тествайте сега

Изход:

 Hello there 

Невалиден функционален интерфейс

Един функционален интерфейс може да разшири друг интерфейс само когато няма абстрактен метод.

 interface sayable{ void say(String msg); // abstract method } @FunctionalInterface interface Doable extends sayable{ // Invalid '@FunctionalInterface' annotation; Doable is not a functional interface void doIt(); } 

Изход:

 compile-time error 

Пример 3

В следващия пример функционален интерфейс се разширява към нефункционален интерфейс.

 interface Doable{ default void doIt(){ System.out.println('Do it now'); } } @FunctionalInterface interface Sayable extends Doable{ void say(String msg); // abstract method } public class FunctionalInterfaceExample3 implements Sayable{ public void say(String msg){ System.out.println(msg); } public static void main(String[] args) { FunctionalInterfaceExample3 fie = new FunctionalInterfaceExample3(); fie.say('Hello there'); fie.doIt(); } } 
Тествайте сега

Изход:

блокирани номера
 Hello there Do it now 

Предварително дефинирани функционални интерфейси на Java

Java предоставя предварително дефинирани функционални интерфейси за справяне с функционалното програмиране чрез използване на ламбда и препратки към методи.

Можете също да дефинирате свой персонализиран функционален интерфейс. Следва списъкът с функционален интерфейс, който е поставен в пакета java.util.function.


Интерфейс Описание
BiConsumer Той представлява операция, която приема два входни аргумента и не връща резултат.
Консуматор Той представлява операция, която приема един аргумент и не връща резултат.
функция Той представлява функция, която приема един аргумент и връща резултат.
Предикат Той представлява предикат (функция с булева стойност) на един аргумент.
BiFunction Той представлява функция, която приема два аргумента и връща резултат.
Двоичен оператор Той представлява операция върху два операнда от един и същи тип данни. Той връща резултат от същия тип като операндите.
BiPredicate Той представлява предикат (функция с булева стойност) от два аргумента.
BooleanSupplier Той представлява доставчик на резултати с булеви стойности.
DoubleBinaryOperator Той представлява операция върху два операнда от двоен тип и връща стойност от двоен тип.
DoubleConsumer Той представлява операция, която приема един аргумент от двоен тип и не връща резултат.
DoubleFunction Той представлява функция, която приема аргумент от двоен тип и произвежда резултат.
DoublePredicate Той представлява предикат (функция с булева стойност) на един аргумент от двоен тип.
DoubleSupplier Представлява доставчик на резултати от двоен тип.
DoubleToIntFunction Той представлява функция, която приема аргумент от двоен тип и произвежда резултат от тип int.
DoubleToLongFunction Той представлява функция, която приема аргумент от двоен тип и произвежда резултат от дълъг тип.
DoubleUnaryOperator Той представлява операция върху един единствен операнд от двоен тип, която произвежда резултат от двоен тип.
IntBinaryOperator Той представлява операция върху два операнда тип int и връща резултат от тип int.
IntConsumer Той представлява операция, която приема един аргумент като цяло число и не връща резултат.
IntFunction Той представлява функция, която приема целочислен аргумент и връща резултат.
IntPredicate Той представлява предикат (функция с булева стойност) на един целочислен аргумент.
IntSupplier Той представлява доставчик от целочислен тип.
IntToDoubleFunction Той представлява функция, която приема целочислен аргумент и връща двойно.
IntToLongFunction Той представлява функция, която приема целочислен аргумент и връща long.
IntUnaryOperator Той представлява операция върху единичен операнд с цяло число, който произвежда резултат с цяло число.
LongBinaryOperator Той представлява операция върху два операнда от дълъг тип и връща резултат от дълъг тип.
LongConsumer Той представлява операция, която приема един аргумент от дълъг тип и не връща резултат.
LongFunction Той представлява функция, която приема аргумент от дълъг тип и връща резултат.
LongPredicate Той представлява предикат (функция с булева стойност) на един аргумент от дълъг тип.
LongSupplier Представлява доставчик на резултати от дълъг тип.
LongToDoubleFunction Той представлява функция, която приема аргумент от дълъг тип и връща резултат от двоен тип.
LongToIntFunction Той представлява функция, която приема аргумент от дълъг тип и връща целочислен резултат.
LongUnaryOperator Той представлява операция върху един операнд от дълъг тип, който връща резултат от дълъг тип.
ObjDoubleConsumer Той представлява операция, която приема обект и двоен аргумент и не връща резултат.
ObjIntConsumer Той представлява операция, която приема обект и целочислен аргумент. Не връща резултат.
ObjLongConsumer Представлява операция, която приема обект и дълъг аргумент, не връща резултат.
Доставчик Представлява доставчик на резултати.
ToDoubleBiFunction Той представлява функция, която приема два аргумента и произвежда резултат от двоен тип.
ToDoubleFunction Той представлява функция, която връща резултат от двоен тип.
ToIntBiFunction Той представлява функция, която приема два аргумента и връща цяло число.
ToIntFunction Той представлява функция, която връща цяло число.
ToLongBiFunction Представлява функция, която приема два аргумента и връща резултат от тип long.
ToLongFunction Той представлява функция, която връща резултат от тип long.
Унарен оператор Той представлява операция върху един операнд, която връща резултат от същия тип като неговия операнд.