Java Grundkurs 3: Generische Programmierung, Datenströme, Datumsrechnung

Method Reference

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
In diesem Video lernen Sie die Method Reference kennen. Eine Method Reference ist ein Lambda-Ausdruck mit einer noch kürzeren Syntax. Sie kann einen Lambda-Ausdruck dann ersetzen, wenn der Lambda-Ausdruck lediglich eine Methode aufruft.

Transkript

In diesem Video lernen Sie die Bedeutung und Anwendung der sogenannten Method-Reference kennen. Eine Method-Reference ist ein Lambda-Ausdruck mit einer noch kürzeren Syntax, als der Lambda-Ausdruck bereits bietet. Eine Method-Reference wird statt des Lambda-Ausdrucks dann eingesetzt, wenn der Lambda-Ausdruck nichts Anderes macht, als eine Methode aufzurufen. Dies schauen wir uns jetzt anhand unseres durchgehenden Programmierbeispiels an. Den Lambda-Ausdruck in unserem Beispielprogramm werde ich nun so abwandeln, dass er lediglich eine Methode aufruft. Ich erzeuge zunächst also eine neue Methode und diese Methode werde ich Berechne Quadrat nennen. Die werde ich hier unten mal anfügen. Also die kann ruhig private sein und dann double und hier sage ich berechneQuadrat. Und die Methode berechneQuadrat die nimmt einen Übergabe-Parameter entgegen des Typs double an, deren Variable ich a nenne. Und Zurück liefere ich hier habe ich mich verschrieben, so Zurück liefere ich dann das Quadrat, indem ich a mit sich selbst multipliziere und dann mit return zurückgebe. Jetzt rufe ich die Methode berechneQuadrat aus einem Lambda-Ausdruck auf und zwar genau aus diesem hier. Also anstatt a * a schreibe ich dort this.berechneuadrat(a) und kann somit dann zur Method-Reference kommen, denn diese ist ja ein Ausdruck, der bei einer Lambda-Expression eine weitere Abkürzung erlaubt und zwar genau dann, wenn der Lambda-Ausdruck lediglich eine Methode aufruft. Diesen Fall haben wir jetzt und zwar kann ich dann auf die Deklaration der Parameter komplett verzichten. Also ich brauche ja nichts anzuzeigen. Das kann weg und das kann ja auch komplett entfallen und auch der Lambda-Operator kann komplett weg. Und auch anstatt dem Punkt-Operator setze ich zwei Doppelpunkte hin. Denn hierdurch erkennt der Compiler, dass ich eine Methode-Referenz verwenden möchte. Der Fachausdruck für diesen doppelten Doppelpunkt nennt sich Double Colon Operator. Wie Sie sehen haben wir auf die Anzeige der Parameter komplett verzichten können. und da stelle ich doch die Frage Wie das denn überhaupt möglich ist? Aber eigentlich es ist logisch, dass es dem Compiler gelingt, denn dieser Compiler kann nicht nur auf die Datentypen schließen, indem er sich die Datentypen der Single Abstract Method im Functional Interface beziehungsweise bei Generics die Parametrisierung anschaut, sondern er hat auch die Möglichkeit zu sehen, dass die Single Abstract Method berechneQuadrat lediglich einen einzigen Übergabeparameter entgegennimmt und deshalb braucht der die Information genauso wenig. Das sieht jetzt auch ziemlich kompakt aus. Weniger Quelltext haben wir in unserem Beispielprogramm insgesamt nicht, da hier unten in der Methode Berechne Quadrat ja alles auf dem Anweisungsblock des Lambda-Ausdrucks nochmal herein kodiert werden musste. Aber hier oben sehen Sie, dass das ganze Drum und Dran weggelassen werden kann, da es in der Implementierung selbst steht. So verwenden wir bei der Method-Reference lediglich das Nötigste, um vom Compiler verstanden zu werden. Dieser Vorteil wird vor allem dann deutlich, wenn man eine bereits vorgefertigte Methode wiederholt verwenden kann, ohne die Parameter und Rückgabewerte zu spezifizieren. Noch deutlicher wird es also, wenn sich die Methode, die ich aufrufe in einer externen Klasse befindet und dies zeige ich Ihnen mal, indem ich jetzt die Methode Berechne Quadrat in eine externe Klasse versetze. Diese neue Klasse nenne ich QuadratRechnerImpl. Ich erzeuge also eine neue Klasse über File New Class und die Klasse nenne ich QuadratRechnerImpl und ich bestätige mit Finish. Jetzt kopiere ich und schneide hier diese Methode komplett heraus, aus der Klasse App und füge diese Methode aus dem Zwischenspeicher über Strg + V in die Klasse QuadratRechnerImpl hinein. So den Modifier für die Sichtbarkeit setze ich auf public, die soll von außen sichtbar sein. Und ansonsten verändere ich nichts. Als nächstes muss ich in der Klasse App dafür sorgen, dass die Methode Berechne Quadrat aufgerufen wird. Hierfür brauche ich zunächst ein Objekt der Klasse QuadratRechnerImpl. Ich erzeuge also zunächst eine Variable des Typs QuadratRechnerImpl. Die nenne ich auch quadratRechnerImpl. Dann brauche ich den Zuweisungsoperator, um der Variablen QuadratRechnerImpl ein neues Objekt zuzuweisen des Typs QuadratRechnerImpl. Jetzt habe ich eine Variable, die ich nutzen kann, denn die Methode berechneQuadrat, die hängt jetzt hier als inneres Element bei der Klasse QuadratRechnerImpl und deshalb kann ich die Variable dort einmal in den Zwischenspeicher setzen und das this durch die Variable ersetzen. Und das speichere ich jetzt ab und wie Sie sehen, funktioniert das. Wie Sie am Beispiel sehen, können wir die Methode Berechne Quadrat der Klasse QuadratRechnerImpl über den Double Colon Operator ja also referenzieren. Vom Prinzip her ist die Syntax also ganz einfach. Parameter brauchen wir nicht anzuzeigen, da der Compiler dies aus der vorhandenen Syntax entnimmt. Nebenbeigesagt zusätzlich besteht die Möglichkeit den Constructor aufzurufen. Hier versetzt man dann statt des Methodennamens das Schlüsselwort new hinter den Double Colon Operator. Das wäre dann so, man kann hier folgendes Schreiben. Das nehme ich mal raus und dann würde hier new stehen, aber das macht in unserem Fall keinen Sinn. Ich belasse es also mal bei berechneQuadrat. Jetzt zeige ich Ihnen noch, wie eine Klassenmethode referenziert wird. Deshalb werde ich die Methode berechneQuadrat zu einer Klassenmethode umwandeln. Ich gehe also zu der Klasse QuadratRechnerImpl und setze hinter dem public noch ein static hinzu. So und jetzt haben wir es mit einer Klassen Methode zu tun. Jetzt wechsle ich in die Klasse App. Und dort brauche ich diese Zeile hier komplett nicht mehr. Ich brauche also keine Variable mehr des Typs QuadratRechnerImpl, denn eine Klassen Methode wird ja direkt bei der Klasse aufgerufen und das funktioniert so. Ich habe also hier die Klasse referenziert und dahinter kommt dann der Doppel Colon für die Method-Reference und dahinter rufe ich dann die Klassen Methode berechneQuadrat auf. Dieses Beispiel probiere ich noch einmal aus und jetzt sehen Sie, dass da hier unten funktioniert. In diesem Video habe ich Ihnen die Method-Reference vorgestellt, die wir statt eines Lambda-Ausdrucks einsetzen können, wenn der Lambda-Ausdruck nichts Anderes macht, als eine Methode aufzurufen. Die Method-Reference ist also eine weitere Vereinfachung eines Lambda-Ausdrucks. Bei der Method-Reference wird lediglich die Methode referenziert, die bei Ausführung der Single Abstract Method aufgerufen wird. Auf den Rest kann komplett verzichtet werden, weil der Compiler von sich aus auf die erforderlichen Parameter und Datentypen selbst schließen kann.

Java Grundkurs 3: Generische Programmierung, Datenströme, Datumsrechnung

Steigen Sie tiefer in die Java-Programierung ein und lernen Sie den Umgang mit generischen Typen, Lamda-Ausdrücken, DAtenströmen und mit Datums- und Zeitberechnung.

5 Std. 24 min (47 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:09.10.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!