Sąsaja, kurioje yra tiksliai vienas abstraktus metodas, yra žinoma kaip funkcinė sąsaja. Jame gali būti bet koks numatytųjų statinių metodų skaičius, bet gali būti tik vienas abstraktus metodas. Jis taip pat gali deklaruoti objektų klasės metodus.
Funkcinė sąsaja taip pat žinoma kaip Single Abstract Method Interfaces arba SAM sąsajos. Tai nauja Java funkcija, padedanti pasiekti funkcinį programavimo metodą.
1 pavyzdys
@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'); } }Išbandykite dabar
Išvestis:
Hello there
Funkcinė sąsaja gali turėti objektų klasės metodus. Žiūrėkite toliau pateiktame pavyzdyje.
2 pavyzdys
@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'); } }Išbandykite dabar
Išvestis:
Hello there
Netinkama funkcinė sąsaja
Funkcinė sąsaja gali išplėsti kitą sąsają tik tada, kai ji neturi jokio abstraktaus metodo.
interface sayable{ void say(String msg); // abstract method } @FunctionalInterface interface Doable extends sayable{ // Invalid '@FunctionalInterface' annotation; Doable is not a functional interface void doIt(); }
Išvestis:
compile-time error
3 pavyzdys
Toliau pateiktame pavyzdyje funkcinė sąsaja išplečiama iki nefunkcinės sąsajos.
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(); } }Išbandykite dabar
Išvestis:
Hello there Do it now
Java iš anksto nustatytos funkcinės sąsajos
Java teikia iš anksto nustatytas funkcines sąsajas, skirtas funkciniam programavimui, naudojant lambda ir metodų nuorodas.
Taip pat galite nustatyti savo tinkintą funkcinę sąsają. Toliau pateikiamas funkcinių sąsajų, esančių java.util.function pakete, sąrašas.
Sąsaja | apibūdinimas |
---|---|
BiConsumer | Tai reiškia operaciją, kuri priima du įvesties argumentus ir nepateikia rezultato. |
Vartotojas | Tai reiškia operaciją, kuri priima vieną argumentą ir nepateikia rezultato. |
Funkcija | Tai reiškia funkciją, kuri priima vieną argumentą ir grąžina rezultatą. |
Predikatas | Tai reiškia vieno argumento predikatą (būlio reikšmės funkciją). |
BiFunction | Tai reiškia funkciją, kuri priima du argumentus ir pateikia rezultatą. |
Dvejetainis operatorius | Tai reiškia operaciją su dviem to paties duomenų tipo operandais. Jis pateikia to paties tipo rezultatą kaip ir operandai. |
BiPredicate | Tai reiškia dviejų argumentų predikatą (būlio reikšmės funkciją). |
BooleanSupplier | Tai yra Būlio vertės rezultatų tiekėjas. |
DoubleBinaryOperator | Tai reiškia operaciją su dviem dvigubo tipo operandais ir grąžina dvigubo tipo reikšmę. |
DoubleConsumer | Tai reiškia operaciją, kuri priima vieną dvigubo tipo argumentą ir nepateikia rezultato. |
DoubleFunction | Tai reiškia funkciją, kuri priima dvigubo tipo argumentą ir sukuria rezultatą. |
DoublePredicate | Tai reiškia vieno dvigubo tipo argumento predikatą (būlio reikšmės funkciją). |
DoubleSupplier | Tai yra dvigubo tipo rezultatų tiekėjas. |
DoubleToIntFunction | Tai reiškia funkciją, kuri priima dvigubo tipo argumentą ir sukuria int tipo rezultatą. |
DoubleToLongFunction | Tai reiškia funkciją, kuri priima dvigubo tipo argumentą ir sukuria ilgo tipo rezultatą. |
DoubleUnaryOperator | Tai reiškia vieno dvigubo tipo operando operaciją, kuri sukuria dvigubo tipo rezultatą. |
IntBinaryOperator | Tai reiškia operaciją su dviem int tipo operandais ir grąžina int tipo rezultatą. |
IntConsumer | Tai reiškia operaciją, kuri priima vieną sveikojo skaičiaus argumentą ir nepateikia rezultato. |
IntFunction | Tai reiškia funkciją, kuri priima sveikojo skaičiaus argumentą ir grąžina rezultatą. |
IntPredicate | Tai reiškia vieno sveikojo skaičiaus argumento predikatą (būlio reikšmės funkciją). |
IntSupplier | Tai yra sveikojo skaičiaus tiekėjas. |
IntToDoubleFunction | Tai reiškia funkciją, kuri priima sveikojo skaičiaus argumentą ir grąžina dvigubą. |
IntToLongFunction | Tai reiškia funkciją, kuri priima sveikojo skaičiaus argumentą ir grąžina ilgą. |
IntUnaryOperator | Tai reiškia vieno sveikojo skaičiaus operando operaciją, kuri sukuria sveikojo skaičiaus rezultatą. |
LongBinaryOperatorius | Tai reiškia operaciją su dviem ilgo tipo operandais ir grąžina ilgo tipo rezultatą. |
LongConsumer | Tai reiškia operaciją, kuri priima vieną ilgo tipo argumentą ir nepateikia jokio rezultato. |
LongFunction | Tai reiškia funkciją, kuri priima ilgo tipo argumentą ir grąžina rezultatą. |
Ilgasis Predikatas | Tai reiškia vieno ilgo tipo argumento predikatą (būlio reikšmės funkciją). |
LongSupplier | Tai yra ilgo tipo rezultatų tiekėjas. |
LongToDoubleFunction | Tai reiškia funkciją, kuri priima ilgo tipo argumentą ir grąžina dvigubo tipo rezultatą. |
LongToIntFunction | Tai reiškia funkciją, kuri priima ilgo tipo argumentą ir grąžina sveikąjį rezultatą. |
LongUnaryOperator | Tai reiškia vieno ilgojo tipo operando operaciją, kuri grąžina ilgo tipo rezultatą. |
ObjDoubleConsumer | Tai reiškia operaciją, kuri priima objektą ir dvigubą argumentą ir nepateikia rezultato. |
„ObjIntConsumer“. | Tai reiškia operaciją, kuri priima objektą ir sveikojo skaičiaus argumentą. Tai negrąžina rezultato. |
ObjLongConsumer | Tai reiškia operaciją, kuri priima objektą ir ilgą argumentą, nepateikia jokio rezultato. |
Tiekėjas | Jis atstovauja rezultatų tiekėjui. |
ToDoubleBiFunction | Tai reiškia funkciją, kuri priima du argumentus ir sukuria dvigubo tipo rezultatą. |
ToDoubleFunction | Tai reiškia funkciją, kuri grąžina dvigubo tipo rezultatą. |
ToIntBiFunction | Tai reiškia funkciją, kuri priima du argumentus ir grąžina sveikąjį skaičių. |
ToIntFunction | Tai reiškia funkciją, kuri grąžina sveikąjį skaičių. |
ToLongBiFunction | Tai reiškia funkciją, kuri priima du argumentus ir pateikia ilgo tipo rezultatą. |
ToLongFunction | Tai reiškia funkciją, kuri grąžina ilgo tipo rezultatą. |
UnaryOperator | Tai reiškia vieno operando operaciją, kuri pateikia to paties tipo rezultatą kaip ir operandas. |