logo

Functionele Java-interfaces

Een interface die precies één abstracte methode bevat, staat bekend als functionele interface. Het kan een willekeurig aantal standaard, statische methoden hebben, maar kan slechts één abstracte methode bevatten. Het kan ook methoden van objectklasse declareren.

Functionele interface wordt ook wel Single Abstract Method Interfaces of SAM-interfaces genoemd. Het is een nieuwe functie in Java, die helpt bij het bereiken van een functionele programmeeraanpak.


voorbeeld 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'); } } 
Test het nu

Uitgang:

 Hello there 

Een functionele interface kan methoden van objectklasse hebben. Zie in het volgende voorbeeld.

Voorbeeld 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'); } } 
Test het nu

Uitgang:

 Hello there 

Ongeldige functionele interface

Een functionele interface kan alleen een andere interface uitbreiden als deze geen abstracte methode heeft.

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

Uitgang:

 compile-time error 

Voorbeeld 3

In het volgende voorbeeld breidt een functionele interface zich uit naar een niet-functionele interface.

 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(); } } 
Test het nu

Uitgang:

 Hello there Do it now 

Java vooraf gedefinieerde functionele interfaces

Java biedt vooraf gedefinieerde functionele interfaces voor functioneel programmeren door gebruik te maken van lambda- en methodereferenties.

U kunt ook uw eigen aangepaste functionele interface definiëren. Hieronder volgt de lijst met functionele interfaces die in het java.util.function-pakket zijn geplaatst.


Koppel Beschrijving
BiConsument Het vertegenwoordigt een bewerking die twee invoerargumenten accepteert en geen resultaat retourneert.
Klant Het vertegenwoordigt een bewerking die één enkel argument accepteert en geen resultaat retourneert.
Functie Het vertegenwoordigt een functie die één argument accepteert en een resultaat retourneert.
Predikaat Het vertegenwoordigt een predikaat (functie met Booleaanse waarde) van één argument.
BiFunctie Het vertegenwoordigt een functie die twee argumenten accepteert en een resultaat retourneert.
BinaireOperator Het vertegenwoordigt een bewerking op twee operanden van hetzelfde gegevenstype. Het retourneert een resultaat van hetzelfde type als de operanden.
BiPredicaat Het vertegenwoordigt een predikaat (functie met Booleaanse waarden) van twee argumenten.
BooleaanseLeverancier Het vertegenwoordigt een leverancier van resultaten met Booleaanse waarden.
DoubleBinaryOperator Het vertegenwoordigt een bewerking op twee operanden van het dubbele type en retourneert een waarde van het dubbele type.
DubbelConsument Het vertegenwoordigt een bewerking die een enkel argument van het dubbele type accepteert en geen resultaat retourneert.
Dubbele Functie Het vertegenwoordigt een functie die een argument van het dubbele type accepteert en een resultaat oplevert.
DubbelPredikaat Het vertegenwoordigt een predikaat (functie met Booleaanse waarde) van één argument van het dubbele type.
DubbeleLeverancier Het vertegenwoordigt een leverancier van dubbele typeresultaten.
DoubleToIntFunctie Het vertegenwoordigt een functie die een dubbel type-argument accepteert en een int-type resultaat oplevert.
DoubleToLongFunctie Het vertegenwoordigt een functie die een dubbel type-argument accepteert en een lang type-resultaat oplevert.
DoubleUnaryOperator Het vertegenwoordigt een bewerking op een enkele operand van het dubbele type die een resultaat van het dubbele type oplevert.
IntBinaryOperator Het vertegenwoordigt een bewerking op twee operanden van het int-type en retourneert een resultaat van het int-type.
IntConsument Het vertegenwoordigt een bewerking die één enkel geheel getal-argument accepteert en geen resultaat retourneert.
IntFunctie Het vertegenwoordigt een functie die een geheel getal-argument accepteert en een resultaat retourneert.
IntPredicaat Het vertegenwoordigt een predikaat (functie met Booleaanse waarde) van één geheel getalargument.
IntLeverancier Het vertegenwoordigt een leverancier van het gehele type.
IntToDoubleFunctie Het vertegenwoordigt een functie die een geheel getal-argument accepteert en een double retourneert.
IntToLongFunctie Het vertegenwoordigt een functie die een geheel getal-argument accepteert en een long retourneert.
IntUnaryOperator Het vertegenwoordigt een bewerking op een enkele integer-operand die een geheel getal-resultaat oplevert.
LangeBinaireOperator Het vertegenwoordigt een bewerking op twee lange type operanden en retourneert een lang type resultaat.
LangeConsument Het vertegenwoordigt een bewerking die één enkel lang type-argument accepteert en geen resultaat retourneert.
Lange Functie Het vertegenwoordigt een functie die een lang type-argument accepteert en een resultaat retourneert.
LangPredikaat Het vertegenwoordigt een predikaat (functie met Booleaanse waarde) van één lang type argument.
LangLeverancier Het vertegenwoordigt een leverancier van lange typeresultaten.
LongToDouble-functie Het vertegenwoordigt een functie die een lang type-argument accepteert en een resultaat van dubbel type retourneert.
LongToIntFunctie Het vertegenwoordigt een functie die een lang type-argument accepteert en een geheel getal resultaat retourneert.
LongUnaryOperator Het vertegenwoordigt een bewerking op een enkele lange type operand die een lang type resultaat retourneert.
ObjDoubleConsument Het vertegenwoordigt een bewerking die een object en een dubbel argument accepteert en geen resultaat retourneert.
ObjIntConsument Het vertegenwoordigt een bewerking die een object en een geheel getal-argument accepteert. Het levert geen resultaat op.
ObjLongConsument Het vertegenwoordigt een bewerking die een object en een lang argument accepteert, maar retourneert geen resultaat.
Leverancier Het vertegenwoordigt een leverancier van resultaten.
NaarDoubleBiFunction Het vertegenwoordigt een functie die twee argumenten accepteert en een dubbel type resultaat oplevert.
Naar dubbele functie Het vertegenwoordigt een functie die een dubbel type resultaat retourneert.
NaarIntBiFunctie Het vertegenwoordigt een functie die twee argumenten accepteert en een geheel getal retourneert.
NaarIntFunctie Het vertegenwoordigt een functie die een geheel getal retourneert.
ToLongBiFunctie Het vertegenwoordigt een functie die twee argumenten accepteert en een resultaat van het lange type retourneert.
NaarLongFunctie Het vertegenwoordigt een functie die een resultaat van het lange type retourneert.
UnaireOperator Het vertegenwoordigt een bewerking op een enkele operand die een resultaat retourneert van hetzelfde type als de operand ervan.