logo

Java-Funktionsschnittstellen

Eine Schnittstelle, die genau eine abstrakte Methode enthält, wird als funktionale Schnittstelle bezeichnet. Es kann eine beliebige Anzahl statischer Standardmethoden haben, aber nur eine abstrakte Methode. Es können auch Methoden der Objektklasse deklariert werden.

Die funktionale Schnittstelle wird auch als Single Abstract Method Interfaces oder SAM Interfaces bezeichnet. Es handelt sich um eine neue Funktion in Java, die dabei hilft, einen funktionalen Programmieransatz zu erreichen.

Git-Status

Beispiel 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'); } } 
Testen Sie es jetzt

Ausgabe:

 Hello there 

Eine funktionale Schnittstelle kann Methoden der Objektklasse haben. Siehe im folgenden Beispiel.

Generizität in Java

Beispiel 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'); } } 
Testen Sie es jetzt

Ausgabe:

 Hello there 

Ungültige funktionale Schnittstelle

Eine funktionale Schnittstelle kann eine andere Schnittstelle nur dann erweitern, wenn sie über keine abstrakte Methode verfügt.

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

Ausgabe:

 compile-time error 

Beispiel 3

Im folgenden Beispiel wird eine funktionale Schnittstelle auf eine nicht funktionale Schnittstelle erweitert.

 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(); } } 
Testen Sie es jetzt

Ausgabe:

Linux-Befehl für zip
 Hello there Do it now 

Java vordefinierte funktionale Schnittstellen

Java bietet vordefinierte funktionale Schnittstellen für die funktionale Programmierung mithilfe von Lambda- und Methodenreferenzen.

Sie können auch Ihre eigene benutzerdefinierte Funktionsschnittstelle definieren. Im Folgenden finden Sie eine Liste der Funktionsschnittstellen, die im Paket java.util.function abgelegt sind.


Schnittstelle Beschreibung
BiConsumer Es stellt eine Operation dar, die zwei Eingabeargumente akzeptiert und kein Ergebnis zurückgibt.
Verbraucher Es stellt eine Operation dar, die ein einzelnes Argument akzeptiert und kein Ergebnis zurückgibt.
Funktion Es stellt eine Funktion dar, die ein Argument akzeptiert und ein Ergebnis zurückgibt.
Prädikat Es stellt ein Prädikat (boolesche Funktion) eines Arguments dar.
BiFunktion Es stellt eine Funktion dar, die zwei Argumente akzeptiert und ein Ergebnis zurückgibt.
BinärOperator Es stellt eine Operation an zwei Operanden desselben Datentyps dar. Es gibt ein Ergebnis desselben Typs wie die Operanden zurück.
BiPredicate Es stellt ein Prädikat (boolesche Funktion) aus zwei Argumenten dar.
BooleanSupplier Es stellt einen Lieferanten boolescher Ergebnisse dar.
DoubleBinaryOperator Es stellt eine Operation an zwei Operanden vom Typ Double dar und gibt einen Wert vom Typ Double zurück.
DoubleConsumer Es stellt eine Operation dar, die ein einzelnes Argument vom Typ Double akzeptiert und kein Ergebnis zurückgibt.
DoubleFunction Es stellt eine Funktion dar, die ein Argument vom Typ Double akzeptiert und ein Ergebnis erzeugt.
DoublePredicate Es stellt ein Prädikat (boolesche Funktion) eines Arguments vom Typ Double dar.
DoubleSupplier Es handelt sich um einen Anbieter von Ergebnissen doppelter Art.
DoubleToIntFunction Es stellt eine Funktion dar, die ein Argument vom Typ Double akzeptiert und ein Ergebnis vom Typ int erzeugt.
DoubleToLongFunction Es stellt eine Funktion dar, die ein Argument vom Typ Double akzeptiert und ein Ergebnis vom Typ Long erzeugt.
DoubleUnaryOperator Es stellt eine Operation an einem einzelnen Operanden vom Typ „Double“ dar, die ein Ergebnis vom Typ „Double“ erzeugt.
IntBinaryOperator Es stellt eine Operation für zwei Operanden vom Typ int dar und gibt ein Ergebnis vom Typ int zurück.
IntConsumer Es stellt eine Operation dar, die ein einzelnes ganzzahliges Argument akzeptiert und kein Ergebnis zurückgibt.
IntFunction Es stellt eine Funktion dar, die ein ganzzahliges Argument akzeptiert und ein Ergebnis zurückgibt.
IntPredicate Es stellt ein Prädikat (boolesche Funktion) eines ganzzahligen Arguments dar.
IntSupplier Es stellt einen Lieferanten vom Typ Integer dar.
IntToDoubleFunction Es stellt eine Funktion dar, die ein ganzzahliges Argument akzeptiert und ein Double zurückgibt.
IntToLongFunction Es stellt eine Funktion dar, die ein ganzzahliges Argument akzeptiert und einen langen Wert zurückgibt.
IntUnaryOperator Es stellt eine Operation an einem einzelnen ganzzahligen Operanden dar, die ein ganzzahliges Ergebnis erzeugt.
LongBinaryOperator Es stellt eine Operation für zwei Operanden vom Typ „Lang“ dar und gibt ein Ergebnis vom Typ „Lang“ zurück.
LongConsumer Es stellt eine Operation dar, die ein einzelnes langes Argument akzeptiert und kein Ergebnis zurückgibt.
LongFunction Es stellt eine Funktion dar, die ein langes Argument akzeptiert und ein Ergebnis zurückgibt.
LongPredicate Es stellt ein Prädikat (boolesche Funktion) eines langen Argumenttyps dar.
LongSupplier Es stellt einen Anbieter von Langzeitergebnissen dar.
LongToDoubleFunction Es stellt eine Funktion dar, die ein Argument vom Typ „Long“ akzeptiert und ein Ergebnis vom Typ „Double“ zurückgibt.
LongToIntFunction Es stellt eine Funktion dar, die ein langes Argument akzeptiert und ein ganzzahliges Ergebnis zurückgibt.
LongUnaryOperator Es stellt eine Operation an einem einzelnen Operanden vom Typ „Lang“ dar, die ein Ergebnis vom Typ „Lang“ zurückgibt.
ObjDoubleConsumer Es stellt eine Operation dar, die ein Objekt und ein doppeltes Argument akzeptiert und kein Ergebnis zurückgibt.
ObjIntConsumer Es stellt eine Operation dar, die ein Objekt und ein ganzzahliges Argument akzeptiert. Es wird kein Ergebnis zurückgegeben.
ObjLongConsumer Es stellt eine Operation dar, die ein Objekt und ein langes Argument akzeptiert und kein Ergebnis zurückgibt.
Anbieter Es stellt einen Ergebnislieferanten dar.
ToDoubleBiFunction Es stellt eine Funktion dar, die zwei Argumente akzeptiert und ein Ergebnis vom Typ Double erzeugt.
ToDoubleFunction Es stellt eine Funktion dar, die ein Ergebnis vom Typ Double zurückgibt.
ToIntBiFunction Es stellt eine Funktion dar, die zwei Argumente akzeptiert und eine Ganzzahl zurückgibt.
ToIntFunction Es stellt eine Funktion dar, die eine Ganzzahl zurückgibt.
ToLongBiFunction Es stellt eine Funktion dar, die zwei Argumente akzeptiert und ein Ergebnis vom Typ „long“ zurückgibt.
ToLongFunction Es stellt eine Funktion dar, die ein Ergebnis vom Typ „long“ zurückgibt.
UnaryOperator Es stellt eine Operation an einem einzelnen Operanden dar, die ein Ergebnis desselben Typs wie sein Operand zurückgibt.