Saskarne, kas satur tieši vienu abstraktu metodi, ir pazīstama kā funkcionāls interfeiss. Tam var būt jebkurš noklusējuma statisko metožu skaits, taču tajā var būt tikai viena abstrakta metode. Tā var arī deklarēt objektu klases metodes.
Funkcionālais interfeiss ir pazīstams arī kā Single Abstract Method Interfaces vai SAM interfeiss. Tā ir jauna Java funkcija, kas palīdz sasniegt funkcionālu programmēšanas pieeju.
1. piemērs
@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'); } }Izmēģiniet to tūlīt
Izvade:
Hello there
Funkcionālajam interfeisam var būt objektu klases metodes. Skatiet tālāk redzamajā piemērā.
2. piemērs
@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'); } }Izmēģiniet to tūlīt
Izvade:
Hello there
Nederīgs funkcionālais interfeiss
Funkcionāls interfeiss var paplašināt citu interfeisu tikai tad, ja tam nav nevienas abstraktas metodes.
interface sayable{ void say(String msg); // abstract method } @FunctionalInterface interface Doable extends sayable{ // Invalid '@FunctionalInterface' annotation; Doable is not a functional interface void doIt(); }
Izvade:
compile-time error
3. piemērs
Nākamajā piemērā funkcionālais interfeiss tiek paplašināts līdz nefunkcionālam interfeisam.
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(); } }Izmēģiniet to tūlīt
Izvade:
Hello there Do it now
Java iepriekš definētas funkcionālās saskarnes
Java nodrošina iepriekš definētas funkcionālās saskarnes funkcionālās programmēšanas veikšanai, izmantojot lambda un metožu atsauces.
Varat arī definēt savu pielāgoto funkcionālo saskarni. Tālāk ir norādīts funkcionālo interfeisu saraksts, kas ir ievietoti java.util.function pakotnē.
Interfeiss | Apraksts |
---|---|
BiPatērētājs | Tas attēlo darbību, kas pieņem divus ievades argumentus un neatgriež rezultātu. |
Patērētājs | Tas apzīmē darbību, kas pieņem vienu argumentu un neatgriež rezultātu. |
Funkcija | Tas apzīmē funkciju, kas pieņem vienu argumentu un atgriež rezultātu. |
Predikāts | Tas attēlo viena argumenta predikātu (būla vērtības funkciju). |
BiFunction | Tā apzīmē funkciju, kas pieņem divus argumentus un atgriež rezultātu. |
Binārais operators | Tas attēlo darbību ar diviem viena un tā paša datu tipa operandiem. Tas atgriež tāda paša veida rezultātu kā operandi. |
BiPredicate | Tas attēlo divu argumentu predikātu (būla vērtības funkciju). |
BooleanSupplier | Tas ir Būla vērtību rezultātu piegādātājs. |
DoubleBinaryOperator | Tas attēlo darbību ar diviem dubultā tipa operandiem un atgriež dubultā tipa vērtību. |
DoubleConsumer | Tas apzīmē darbību, kas pieņem vienu dubultā tipa argumentu un neatgriež rezultātu. |
DoubleFunction | Tā apzīmē funkciju, kas pieņem dubultā tipa argumentu un rada rezultātu. |
DoublePredicate | Tas attēlo viena dubultā tipa argumenta predikātu (būla vērtības funkciju). |
DoubleSupplier | Tas ir dubultā tipa rezultātu piegādātājs. |
DoubleToIntFunction | Tā apzīmē funkciju, kas pieņem dubultā tipa argumentu un rada int tipa rezultātu. |
DoubleToLongFunction | Tā apzīmē funkciju, kas pieņem dubultā tipa argumentu un rada gara tipa rezultātu. |
DoubleUnaryOperator | Tas attēlo darbību ar vienu dubultā tipa operandu, kas rada dubultā tipa rezultātu. |
IntBinaryOperator | Tas attēlo darbību ar diviem int tipa operandiem un atgriež int tipa rezultātu. |
IntConsumer | Tas apzīmē darbību, kas pieņem vienu vesela skaitļa argumentu un neatgriež rezultātu. |
IntFunction | Tā apzīmē funkciju, kas pieņem vesela skaitļa argumentu un atgriež rezultātu. |
IntPredicate | Tas attēlo viena vesela skaitļa argumenta predikātu (būla vērtības funkciju). |
IntSupplier | Tas apzīmē vesela skaitļa tipa piegādātāju. |
IntToDoubleFunction | Tas apzīmē funkciju, kas pieņem vesela skaitļa argumentu un atgriež dubultu. |
IntToLongFunction | Tas apzīmē funkciju, kas pieņem vesela skaitļa argumentu un atgriež garo. |
IntUnaryOperator | Tas attēlo darbību ar vienu veselu skaitļu operanda, kas rada veselu skaitļa rezultātu. |
LongBinaryOperator | Tas attēlo operāciju ar diviem gariem operandiem un atgriež garā tipa rezultātu. |
LongConsumer | Tas apzīmē darbību, kas pieņem vienu gara tipa argumentu un neatgriež rezultātu. |
LongFunction | Tā apzīmē funkciju, kas pieņem gara tipa argumentu un atgriež rezultātu. |
LongPredicate | Tas attēlo viena gara tipa argumenta predikātu (būla vērtības funkciju). |
LongSupplier | Tas ir garā tipa rezultātu piegādātājs. |
LongToDoubleFunction | Tā apzīmē funkciju, kas pieņem gara tipa argumentu un atgriež dubultā tipa rezultātu. |
LongToIntFunction | Tas apzīmē funkciju, kas pieņem gara tipa argumentu un atgriež veselu rezultātu. |
LongUnaryOperator | Tas apzīmē operāciju ar vienu garā tipa operandu, kas atgriež garā tipa rezultātu. |
ObjDoubleConsumer | Tas apzīmē darbību, kas pieņem objektu un dubulto argumentu un neatgriež rezultātu. |
ObjIntConsumer | Tas apzīmē darbību, kas pieņem objektu un vesela skaitļa argumentu. Tas neatgriež rezultātu. |
ObjLongConsumer | Tas attēlo darbību, kas pieņem objektu un garu argumentu, tā neatgriež rezultātu. |
Piegādātājs | Tas pārstāv rezultātu piegādātāju. |
ToDoubleBiFunction | Tā ir funkcija, kas pieņem divus argumentus un rada dubultā tipa rezultātu. |
ToDoubleFunction | Tas apzīmē funkciju, kas atgriež dubultā tipa rezultātu. |
ToIntBiFunction | Tas apzīmē funkciju, kas pieņem divus argumentus un atgriež veselu skaitli. |
ToIntFunction | Tas apzīmē funkciju, kas atgriež veselu skaitli. |
ToLongBiFunction | Tā apzīmē funkciju, kas pieņem divus argumentus un atgriež garā tipa rezultātu. |
ToLongFunction | Tā apzīmē funkciju, kas atgriež garā tipa rezultātu. |
UnaryOperator | Tas attēlo darbību ar vienu operandu, kas atgriež tāda paša veida rezultātu kā tā operands. |