logo

Interfețe funcționale Java

O interfață care conține exact o metodă abstractă este cunoscută ca interfață funcțională. Poate avea orice număr de metode implicite, statice, dar poate conține o singură metodă abstractă. De asemenea, poate declara metode ale clasei de obiecte.

Interfața funcțională este cunoscută și sub numele de interfețe cu metoda abstractă unică sau interfețe SAM. Este o caracteristică nouă în Java, care ajută la realizarea abordării de programare funcțională.


Exemplul 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'); } } 
Testează-l acum

Ieșire:

 Hello there 

O interfață funcțională poate avea metode de clasă obiect. Vezi în exemplul următor.

Exemplul 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'); } } 
Testează-l acum

Ieșire:

 Hello there 

Interfață funcțională nevalidă

O interfață funcțională poate extinde o altă interfață numai atunci când nu are nicio metodă abstractă.

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

Ieșire:

 compile-time error 

Exemplul 3

În exemplul următor, o interfață funcțională se extinde la o interfață nefuncțională.

 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(); } } 
Testează-l acum

Ieșire:

fereastra.deschide javascript
 Hello there Do it now 

Interfețe funcționale predefinite Java

Java oferă interfețe funcționale predefinite pentru a se ocupa de programarea funcțională folosind referințe lambda și metode.

De asemenea, vă puteți defini propria interfață funcțională personalizată. Mai jos este lista de interfețe funcționale care sunt plasate în pachetul java.util.function.


Interfață Descriere
BiConsumer Reprezintă o operație care acceptă două argumente de intrare și nu returnează niciun rezultat.
Consumator Reprezintă o operație care acceptă un singur argument și nu returnează niciun rezultat.
Funcţie Reprezintă o funcție care acceptă un argument și returnează un rezultat.
Predicat Reprezintă un predicat (funcție cu valori booleene) al unui argument.
BiFunction Reprezintă o funcție care acceptă două argumente și returnează un rezultat.
BinaryOperator Reprezintă o operație asupra a doi operanzi de același tip de date. Returnează un rezultat de același tip ca și operanzii.
BiPredicat Reprezintă un predicat (funcție cu valori booleene) a două argumente.
Furnizor boolean Reprezintă un furnizor de rezultate cu valoare booleană.
DoubleBinaryOperator Reprezintă o operație pe doi operanzi de tip dublu și returnează o valoare de tip dublu.
DoubleConsumer Reprezintă o operație care acceptă un singur argument de tip dublu și nu returnează niciun rezultat.
DoubleFunction Reprezintă o funcție care acceptă un argument de tip dublu și produce un rezultat.
DoublePredicate Reprezintă un predicat (funcție cu valori booleene) cu un argument de tip dublu.
Double Supplier Reprezintă un furnizor de rezultate de tip dublu.
DoubleToIntFunction Reprezintă o funcție care acceptă un argument de tip dublu și produce un rezultat de tip int.
DoubleToLongFunction Reprezintă o funcție care acceptă un argument de tip dublu și produce un rezultat de tip lung.
DoubleUnaryOperator Reprezintă o operație pe un singur operand de tip dublu care produce un rezultat de tip dublu.
IntBinaryOperator Reprezintă o operație pe doi operanzi de tip int și returnează un rezultat de tip int.
IntConsumer Reprezintă o operație care acceptă un singur argument întreg și nu returnează niciun rezultat.
IntFunction Reprezintă o funcție care acceptă un argument întreg și returnează un rezultat.
IntPredicate Reprezintă un predicat (funcție cu valori booleene) al unui argument întreg.
IntSupplier Reprezintă un furnizor de tip întreg.
IntToDoubleFunction Reprezintă o funcție care acceptă un argument întreg și returnează un dublu.
IntToLongFunction Reprezintă o funcție care acceptă un argument întreg și returnează un lung.
IntUnaryOperator Reprezintă o operație pe un singur operand întreg care produce un rezultat întreg.
LongBinaryOperator Reprezintă o operație pe doi operanzi de tip lung și returnează un rezultat de tip lung.
LongConsumer Reprezintă o operație care acceptă un singur argument de tip lung și nu returnează niciun rezultat.
LongFunction Reprezintă o funcție care acceptă un argument de tip lung și returnează un rezultat.
LongPredicate Reprezintă un predicat (funcție cu valori booleene) cu un argument de tip lung.
Furnizor lung Reprezintă un furnizor de rezultate de tip lung.
LongToDoubleFunction Reprezintă o funcție care acceptă un argument de tip lung și returnează un rezultat de tip dublu.
LongToIntFunction Reprezintă o funcție care acceptă un argument de tip lung și returnează un rezultat întreg.
LongUnaryOperator Reprezintă o operație pe un singur operand de tip lung care returnează un rezultat de tip lung.
ObjDoubleConsumer Reprezintă o operație care acceptă un obiect și un argument dublu și nu returnează niciun rezultat.
ObjIntConsumer Reprezintă o operație care acceptă un obiect și un argument întreg. Nu returnează rezultat.
ObjLongConsumer Reprezintă o operație care acceptă un obiect și un argument lung, nu returnează niciun rezultat.
Furnizor Reprezintă un furnizor de rezultate.
ToDoubleBiFunction Reprezintă o funcție care acceptă două argumente și produce un rezultat de tip dublu.
ToDoubleFunction Reprezintă o funcție care returnează un rezultat de tip dublu.
ToIntBiFunction Reprezintă o funcție care acceptă două argumente și returnează un număr întreg.
ToIntFunction Reprezintă o funcție care returnează un număr întreg.
ToLongBiFunction Reprezintă o funcție care acceptă două argumente și returnează un rezultat de tip lung.
ToLongFunction Reprezintă o funcție care returnează un rezultat de tip lung.
UnaryOperator Reprezintă o operație pe un singur operand care returnează un rezultat de același tip ca și operandul său.