logo

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

Інтерфейс, який містить рівно один абстрактний метод, називається функціональним інтерфейсом. Він може мати будь-яку кількість стандартних статичних методів, але може містити лише один абстрактний метод. Він також може оголошувати методи класу об'єктів.

Функціональний інтерфейс також відомий як інтерфейси єдиного абстрактного методу або інтерфейси SAM. Це нова функція в Java, яка допомагає досягти підходу функціонального програмування.

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(); } } 
Перевірте зараз

Вихід:

читати з файлу csv у java
 Hello there Do it now 

Попередньо визначені функціональні інтерфейси Java

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

Ви також можете визначити свій власний функціональний інтерфейс. Нижче наведено список функціональних інтерфейсів, які розміщено в пакеті java.util.function.


Інтерфейс опис
БіСпоживач Він представляє операцію, яка приймає два вхідних аргументи і не повертає результату.
Споживач Він представляє операцію, яка приймає один аргумент і не повертає результату.
функція Він представляє функцію, яка приймає один аргумент і повертає результат.
Присудок Він представляє предикат (функцію з логічним значенням) одного аргументу.
БіФункція Він представляє функцію, яка приймає два аргументи та повертає результат.
Двійковий оператор Він представляє операцію над двома операндами одного типу даних. Він повертає результат того самого типу, що й операнди.
БіПредикат Він представляє предикат (функцію з логічним значенням) двох аргументів.
BooleanSupplier Він представляє постачальника результатів з логічним значенням.
DoubleBinaryOperator Він представляє операцію над двома операндами подвійного типу та повертає значення подвійного типу.
DoubleConsumer Він представляє операцію, яка приймає один аргумент типу double і не повертає результату.
DoubleFunction Він представляє функцію, яка приймає аргумент подвійного типу та створює результат.
DoublePredicate Він представляє предикат (функцію з логічним значенням) одного аргументу подвійного типу.
DoubleSupplier Він представляє постачальника результатів подвійного типу.
DoubleToIntFunction Він представляє функцію, яка приймає аргумент типу double і видає результат типу int.
DoubleToLongFunction Він представляє функцію, яка приймає аргумент подвійного типу та видає результат довгого типу.
DoubleUnaryOperator Він представляє операцію над одним операндом подвійного типу, яка створює результат подвійного типу.
IntBinaryOperator Він представляє операцію над двома операндами типу int і повертає результат типу int.
IntConsumer Він представляє операцію, яка приймає єдиний цілий аргумент і не повертає результату.
IntFunction Він представляє функцію, яка приймає цілочисельний аргумент і повертає результат.
IntPredicate Він представляє предикат (функцію з логічним значенням) одного цілого аргументу.
IntSupplier Він представляє постачальника цілого типу.
IntToDoubleFunction Він представляє функцію, яка приймає цілочисельний аргумент і повертає подвійний.
IntToLongFunction Він представляє функцію, яка приймає цілочисельний аргумент і повертає long.
IntUnaryOperator Він представляє операцію над одним цілим операндом, яка дає цілочисельний результат.
LongBinaryOperator Він представляє операцію над двома операндами довгого типу та повертає результат довгого типу.
LongConsumer Він представляє операцію, яка приймає один довгий аргумент типу і не повертає результату.
LongFunction Він представляє функцію, яка приймає довгий аргумент типу та повертає результат.
LongPredicate Він представляє предикат (функцію з логічним значенням) одного аргументу довгого типу.
LongSupplier Він представляє постачальника результатів довгого типу.
Функція LongToDouble Він представляє функцію, яка приймає довгий аргумент типу та повертає результат подвійного типу.
LongToIntFunction Він представляє функцію, яка приймає довгий аргумент типу та повертає цілочисельний результат.
LongUnaryOperator Він представляє операцію над одним довгим операндом, який повертає результат довгого типу.
ObjDoubleConsumer Він представляє операцію, яка приймає об’єкт і подвійний аргумент і не повертає результату.
ObjIntConsumer Він представляє операцію, яка приймає об’єкт і цілочисельний аргумент. Результат не повертає.
ObjLongConsumer Він представляє операцію, яка приймає об’єкт і довгий аргумент, не повертає результату.
Постачальник Він представляє постачальника результатів.
ToDoubleBiFunction Він представляє функцію, яка приймає два аргументи та створює результат подвійного типу.
ToDoubleFunction Він представляє функцію, яка повертає результат подвійного типу.
ToIntBiFunction Він представляє функцію, яка приймає два аргументи та повертає ціле число.
ToIntFunction Він представляє функцію, яка повертає ціле число.
ToLongBiFunction Він представляє функцію, яка приймає два аргументи та повертає результат типу long.
ToLongFunction Він представляє функцію, яка повертає результат типу long.
Унарний оператор Він представляє операцію над одним операндом, яка повертає результат того самого типу, що й його операнд.