Home > Informatik > Begriffe und Konzepte > funktionales Interface

funktionales Interface

Definition

funktionales Interface

Ein funktionales Interface ist ein Java-Interface, das nur eine einzige abstrakte Methode definiert.

Erläuterung

Funktionale Interfaces spielen eine zentrale Rolle bei der Verwendung von Lambda-Ausdrücken in Java. Anhand eines Beispiels soll dies verdeutlicht werden.

Beispiel
Beschreibung siehe folgenden Text

Das Demo-Interface Checkable

Das Interface Checkable deklariert genau eine abstrakte Methode boolean check().

Ein funktionales Interface zeichnet sich dadurch aus, dass es genau eine abstrakte Methode enthält. Damit ist es geeignet, mit Lambda-Ausdrücken verwendet zu werden.

Beschreibung siehe folgenden Text

Die Klasse Rectangle (Demo-Version)

Die Klasse Rectangle wurde hier nur zu Demonstrationszwecken definiert. Sie enthält zwei Instanzvariablen length und width sowie die entsprechenden Getter-Methoden getLength() und getWidth().

Beschreibung siehe folgenden Text

Die Klasse LamdaDemo

Jetzt wird es langsam interessant. In Zeile 6 wird zunächst ein Objekt der Klasse Rectangle erzeugt, mit einer Länge von 8 und einer Breite von 12.

Die Methode checkValidity() (in den Zeilen 17 bis 21) erwartet als Parameter ein Objekt des Interfaces Checkable und liefert einen String zurück.

Innerhalb dieser Methode wird die Interface-Methode check() aufgerufen, die einen Wahrheitswert zurückgibt. Abhängig vom Ergebnis wird "valid" oder "invalid" zurückgegeben.

Verwendung von Lamda-Ausdrücken

In den Zeilen 8 bis 9 wird checkValidity() mit einem Lambda-Ausdruck aufgerufen:

() -> rect.getLength() > 0 && rect.getWidth() > 0

Auf der linken Seite des Pfeil-Operators steht eine leere Parameterliste, weil die Methode check() des Interfaces ja auch keine Parameter erwartet.

Auf der rechten Seite des Pfeil-Operators steht nun ein Ausdruck, der die Methode check() implementiert. Diese Implementation überprüft, ob die Länge und die Breite des Rechtecks größer als Null sind.

Der Lambda-Ausdruck ersetzt also die sonst übliche Implementierung von Checkable in einer konkreten Klasse.

Das Ganze wiederholt sich in den Zeilen 12 und 13. Nur wird hier eine andere Implementation der Methode check() als Parameter an checkValidity() übergeben. Jetzt soll überprüft werden, ob Länge und Breite des Rechtecks kleiner oder gleich 10 sind.

Quellen:

  1. Q. Charatan and A. Kans: Programming in Two Semesters. Springer Nature Switzerland AB 2022.