logo

Java funkcionalna sučelja

Sučelje koje sadrži točno jednu apstraktnu metodu poznato je kao funkcionalno sučelje. Može imati bilo koji broj zadanih, statičkih metoda, ali može sadržavati samo jednu apstraktnu metodu. Također može deklarirati metode klase objekata.

Funkcionalno sučelje također je poznato kao sučelja pojedinačne apstraktne metode ili sučelja SAM. To je nova značajka u Javi koja pomaže u postizanju funkcionalnog programskog pristupa.


Primjer 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'); } } 
Testirajte sada

Izlaz:

 Hello there 

Funkcionalno sučelje može imati metode klase objekta. Pogledajte u sljedećem primjeru.

Primjer 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'); } } 
Testirajte sada

Izlaz:

 Hello there 

Nevažeće funkcionalno sučelje

Funkcionalno sučelje može proširiti drugo sučelje samo ako nema nikakvu apstraktnu metodu.

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

Izlaz:

 compile-time error 

Primjer 3

U sljedećem primjeru, funkcionalno sučelje proširuje se na nefunkcionalno sučelje.

 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(); } } 
Testirajte sada

Izlaz:

 Hello there Do it now 

Java unaprijed definirana funkcionalna sučelja

Java pruža unaprijed definirana funkcionalna sučelja za rad s funkcionalnim programiranjem pomoću lambda i referenci metoda.

Također možete definirati vlastito prilagođeno funkcionalno sučelje. Slijedi popis funkcionalnih sučelja koja su smještena u paketu java.util.function.


Sučelje Opis
BiPotrošač Predstavlja operaciju koja prihvaća dva ulazna argumenta i ne vraća nikakav rezultat.
Potrošač Predstavlja operaciju koja prihvaća jedan argument i ne vraća nikakav rezultat.
Funkcija Predstavlja funkciju koja prihvaća jedan argument i vraća rezultat.
Predikat Predstavlja predikat (funkcija s booleovom vrijednosti) jednog argumenta.
Bifunkcija Predstavlja funkciju koja prihvaća dva argumenta i vraća rezultat.
BinarniOperator Predstavlja operaciju nad dva operanda istog tipa podataka. Vraća rezultat iste vrste kao i operandi.
Bipredikat Predstavlja predikat (funkcija s booleovom vrijednosti) dvaju argumenata.
BooleanSupplier Predstavlja dobavljača Booleovih rezultata.
DoubleBinaryOperator Predstavlja operaciju na dva operanda dvostrukog tipa i vraća vrijednost dvostrukog tipa.
Dvostruki potrošač Predstavlja operaciju koja prihvaća jedan dvostruki argument tipa i ne vraća nikakav rezultat.
DoubleFunction Predstavlja funkciju koja prihvaća dvostruki tip argumenta i proizvodi rezultat.
Dvostruki predikat Predstavlja predikat (funkcija s booleovom vrijednosti) jednog argumenta dvostrukog tipa.
DoubleSupplier Predstavlja dobavljača dvostrukih rezultata.
DoubleToIntFunction Predstavlja funkciju koja prihvaća dvostruki argument tipa i proizvodi rezultat tipa int.
DoubleToLongFunction Predstavlja funkciju koja prihvaća argument dvostrukog tipa i proizvodi rezultat dugog tipa.
DoubleUnaryOperator Predstavlja operaciju na jednom operandu dvostrukog tipa koja proizvodi rezultat dvostrukog tipa.
IntBinaryOperator Predstavlja operaciju nad dva operanda tipa int i vraća rezultat tipa int.
IntConsumer Predstavlja operaciju koja prihvaća jedan argument cijelog broja i ne vraća nikakav rezultat.
IntFunction Predstavlja funkciju koja prihvaća argument cijelog broja i vraća rezultat.
IntPredicate Predstavlja predikat (funkcija s booleovom vrijednosti) jednog argumenta cijelog broja.
IntSupplier Predstavlja dobavljača cjelobrojnog tipa.
IntToDoubleFunction Predstavlja funkciju koja prihvaća cjelobrojni argument i vraća double.
IntToLongFunction Predstavlja funkciju koja prihvaća argument integer i vraća long.
IntUnaryOperator Predstavlja operaciju na jednom cijelobrojnom operandu koja proizvodi cjelobrojni rezultat.
DugiBinarniOperator Predstavlja operaciju na dva operanda dugog tipa i vraća rezultat dugog tipa.
LongConsumer Predstavlja operaciju koja prihvaća jedan argument dugog tipa i ne vraća nikakav rezultat.
LongFunction Predstavlja funkciju koja prihvaća dugi tip argumenta i vraća rezultat.
Dugi predikat Predstavlja predikat (funkcija s booleovom vrijednosti) jednog dugog tipa argumenta.
LongSupplier Predstavlja dobavljača rezultata dugog tipa.
LongToDoubleFunction Predstavlja funkciju koja prihvaća dugi tip argumenta i vraća rezultat dvostrukog tipa.
LongToIntFunction Predstavlja funkciju koja prihvaća dugi tip argumenta i vraća cjelobrojni rezultat.
LongUnaryOperator Predstavlja operaciju na jednom operandu dugog tipa koji vraća rezultat dugog tipa.
ObjDoubleConsumer Predstavlja operaciju koja prihvaća objekt i dvostruki argument, a ne vraća nikakav rezultat.
ObjIntConsumer Predstavlja operaciju koja prihvaća objekt i cjelobrojni argument. Ne vraća rezultat.
ObjLongConsumer Predstavlja operaciju koja prihvaća objekt i dugi argument, ne vraća nikakav rezultat.
Dobavljač Predstavlja dobavljača rezultata.
ToDoubleBiFunction Predstavlja funkciju koja prihvaća dva argumenta i proizvodi rezultat dvostrukog tipa.
ToDoubleFunction Predstavlja funkciju koja vraća rezultat dvostrukog tipa.
ToIntBiFunction Predstavlja funkciju koja prihvaća dva argumenta i vraća cijeli broj.
ToIntFunction Predstavlja funkciju koja vraća cijeli broj.
ToLongBiFunction Predstavlja funkciju koja prihvaća dva argumenta i vraća rezultat dugog tipa.
ToLongFunction Predstavlja funkciju koja vraća rezultat dugog tipa.
Unarni operator Predstavlja operaciju na jednom operandu koja vraća rezultat istog tipa kao i njegov operand.