logo

Java funkcionális interfészek

Az olyan interfészt, amely pontosan egy absztrakt metódust tartalmaz, funkcionális interfésznek nevezzük. Tetszőleges számú alapértelmezett statikus metódusa lehet, de csak egy absztrakt metódust tartalmazhat. Az objektumosztály metódusait is deklarálhatja.

A funkcionális interfész más néven Single Abstract Method Interfaces vagy SAM Interfaces. Ez egy új szolgáltatás a Java-ban, amely segít a funkcionális programozási megközelítés megvalósításában.

css wrap szöveg

1. példa

 @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'); } } 
Tesztelje most

Kimenet:

 Hello there 

Egy funkcionális interfésznek lehetnek objektumosztályú metódusai. Lásd a következő példában.

burak ozcivit

2. példa

 @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'); } } 
Tesztelje most

Kimenet:

 Hello there 

Érvénytelen funkcionális interfész

Egy funkcionális interfész csak akkor tud kiterjeszteni egy másik interfészt, ha nincs absztrakt módszere.

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

Kimenet:

 compile-time error 

3. példa

A következő példában egy funkcionális interfész egy nem funkcionális interfészre terjed ki.

 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(); } } 
Tesztelje most

Kimenet:

lexikográfiai rend
 Hello there Do it now 

Java előre definiált funkcionális interfészek

A Java előre definiált funkcionális interfészeket biztosít a funkcionális programozás kezelésére lambda és metódushivatkozások használatával.

Meghatározhatja saját egyéni funkcionális felületét is. Az alábbiakban a java.util.function csomagban található funkcionális interfészek listája található.


Felület Leírás
BiConsumer Olyan műveletet jelent, amely két bemeneti argumentumot fogad el, és nem ad vissza eredményt.
Fogyasztó Olyan műveletet jelent, amely egyetlen argumentumot fogad el, és nem ad vissza eredményt.
Funkció Olyan függvényt jelöl, amely elfogad egy argumentumot és egy eredményt ad vissza.
Állítmány Egy argumentum predikátumát (logikai értékű függvényét) reprezentálja.
BiFunction Olyan függvényt képvisel, amely két argumentumot fogad el, és egy eredményt ad vissza.
Bináris Operátor Ez egy műveletet jelent két azonos adattípusú operanduson. Ugyanolyan típusú eredményt ad vissza, mint az operandusok.
BiPredicate Két argumentum predikátumát (logikai értékű függvényét) képviseli.
BooleanSupplier Ez a logikai értékű eredmények szállítója.
DoubleBinaryOperator Két dupla típusú operanduson végzett műveletet reprezentál, és egy dupla típusú értéket ad vissza.
DoubleConsumer Olyan műveletet jelent, amely egyetlen dupla típusú argumentumot fogad el, és nem ad vissza eredményt.
DoubleFunction Olyan függvényt képvisel, amely elfogad egy dupla típusú argumentumot, és eredményt ad.
DoublePredicate Egy dupla típusú argumentum predikátumát (logikai értékű függvényét) reprezentálja.
DoubleSupplier A kettős típusú eredmények szállítóját képviseli.
DoubleToIntFunction Olyan függvényt képvisel, amely elfogad egy dupla típusú argumentumot, és int típusú eredményt ad.
DoubleToLongFunction Olyan függvényt képvisel, amely elfogad egy dupla típusú argumentumot, és hosszú típusú eredményt ad.
DoubleUnaryOperator Egyetlen dupla típusú operanduson végzett műveletet reprezentál, amely kettős típusú eredményt ad.
IntBinaryOperator Két int típusú operanduson végzett műveletet reprezentál, és int típusú eredményt ad vissza.
IntConsumer Olyan műveletet jelent, amely egyetlen egész argumentumot fogad el, és nem ad vissza eredményt.
IntFunction Olyan függvényt jelöl, amely elfogad egy egész argumentumot, és egy eredményt ad vissza.
IntPredicate Egy egész argumentum predikátumát (logikai értékű függvényét) reprezentálja.
IntSupplier Egész típusú beszállítót jelent.
IntToDoubleFunction Olyan függvényt jelöl, amely elfogad egy egész argumentumot, és egy double-t ad vissza.
IntToLongFunction Olyan függvényt jelöl, amely elfogad egy egész argumentumot, és egy long értéket ad vissza.
IntUnaryOperator Egyetlen egész operanduson végzett műveletet reprezentál, amely egész számot ad.
LongBinaryOperator Két hosszú típusú operanduson végzett műveletet reprezentál, és hosszú típusú eredményt ad vissza.
LongConsumer Olyan műveletet jelent, amely egyetlen hosszú típusú argumentumot fogad el, és nem ad vissza eredményt.
LongFunction Olyan függvényt jelöl, amely elfogad egy hosszú típusú argumentumot, és eredményt ad vissza.
LongPredicate Egy hosszú típusú argumentum predikátumát (logikai értékű függvényét) reprezentálja.
LongSupplier A hosszú típusú eredmények szállítója.
LongToDoubleFunction Olyan függvényt jelöl, amely elfogad egy hosszú típusú argumentumot, és dupla típusú eredményt ad vissza.
LongToIntFunction Olyan függvényt jelöl, amely elfogad egy hosszú típusú argumentumot, és egész számot ad vissza.
LongUnaryOperator Egyetlen hosszú típusú operanduson végzett műveletet képvisel, amely hosszú típusú eredményt ad vissza.
ObjDoubleConsumer Olyan műveletet jelent, amely elfogad egy objektumot és egy kettős argumentumot, és nem ad vissza eredményt.
ObjIntConsumer Olyan műveletet jelent, amely elfogad egy objektumot és egy egész argumentumot. Nem ad vissza eredményt.
ObjLongConsumer Olyan műveletet jelent, amely elfogad egy objektumot és egy hosszú argumentumot, nem ad vissza eredményt.
Támogató Az eredmények szállítóját képviseli.
ToDoubleBiFunction Olyan függvényt képvisel, amely két argumentumot fogad el, és kettős típusú eredményt ad.
ToDoubleFunction Olyan függvényt jelöl, amely dupla típusú eredményt ad vissza.
ToIntBiFunction Olyan függvényt képvisel, amely két argumentumot fogad el, és egy egész számot ad vissza.
ToIntFunction Olyan függvényt jelöl, amely egész számot ad vissza.
ToLongBiFunction Olyan függvényt jelöl, amely két argumentumot fogad el, és hosszú típusú eredményt ad vissza.
ToLongFunction Olyan függvényt jelöl, amely hosszú típusú eredményt ad vissza.
UnaryOperator Egyetlen operanduson végzett műveletet jelöl, amely az operandusával azonos típusú eredményt ad vissza.