Інтерфейс, який містить рівно один абстрактний метод, називається функціональним інтерфейсом. Він може мати будь-яку кількість стандартних статичних методів, але може містити лише один абстрактний метод. Він також може оголошувати методи класу об'єктів.
Функціональний інтерфейс також відомий як інтерфейси єдиного абстрактного методу або інтерфейси 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. |
Унарний оператор | Він представляє операцію над одним операндом, яка повертає результат того самого типу, що й його операнд. |