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. |