Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

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

Funktionale Schnittstellen mit Primitiven

Testen Sie unsere 2015 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
In diesem Video stellt Ihnen der Trainer spezielle Functional Interfaces vor, bei denen bewusst auf Generics verzichtet wurde – weil es Situationen gibt, in denen die automatische Umwandlung numerischer Datentypen zu Wrapper-Klassen nicht erwünscht ist.

Transkript

In diesem Video werde ich Ihnen Functional Interfaces vorstellen, bei denen bewusst auf Generics verzichtet wird. Und zwar handelt es sich um Situationen, in denen elementare Datentypen gebraucht werden, die automatische Umwandlung von elementaren Datentypen zu Wrapper Klassen also nicht erwünscht ist. Aber gehen wir Schritt fuer Schrit vor. Betrachten wir nochmal unser durchgehendes Programmierbeispiel, das ja bereits zahlreiche Functional Interfaces in Gebrauch hat. Alle von uns bislang genutzten Functional Interface verfügen über Generics und werden mit Hilfe von generischen Typ-Parametern eingesetzt. Dies ist ein Vorteil, weil sie hierdurch universell eingesetzt werden können. Bei den nummerischen Datentypen hier oben, bei UnaryOperator und BinaryOperator muss der zwar über Auto Boxing und Auto Unboxing unter die Arme greifen, weil wir ja einen elementaren Datentyp einlesen, im Lambda Ausdruck aber eine Wrapper Klasse verwendet wird. Aber das braucht uns in den meisten Fällen nicht zu kümmern. Allerdings könnte es auch vorkommen, dass genau dies nicht erwünscht ist. Denn manchmal möchte man Variablen eines elementaren Datentyps. Und für genau diesen Fall bietet die Java Standardbibliothek spezielle Varianten für fast jedes dieser generischen Functional Interfaces an. Die Namengebung dieser Interfaces ist denkbar einfach zu merken, denn es wird jeweils der elementare Datentyp vor das generische Original angefügt. Beispielsweise nennt sich die spezielle Double Variante des UnaryOperator DoubleUnaryOperator und die spezielle Double Variante des BinaryOperators nennt sich DoubleBinaryOperator und so weiter. In unserem Beispielprogramm werde ich diese beiden Functional Interfaces entsprechend umbenennen. Also, ich schreibe hier rein DoubleUnaryOperator und importiere das Functional Interface und dann weist mich Eclipse auch schon daraufhin: Remove Type Argument, also weg damit. Und auch hier benenne ich den Datentyp DoubleBinaryOperator. Importiere das Interface und entferne die Parametrisierung des Typ-Parameters. Und hier zeigt mir Eclipse jetzt an, dass die Methode apply nicht gefunden werden kann. Und das ist auch richtig, denn die Single Abstract Method von DoubleUnaryOperator und DoubleBinaryOperator nennt sich applyAsDouble. Und dies passe ich jetzt auch noch an. Also apply, dann Strg + Leertaste und jetzt habe ich die applyAsDouble Methode und kann den Rest hier weg entfernen und hier unten muss ich das Ganze auch noch korrigieren. Apply + Strg + Leertaste und das ist überflüssig. Also haben wir jetzt die Single Abstract Method applyAsDouble aufgerufen und die bekommt zwei Übergabe-Parameter groesse und gewicht und ansonsten passt alles. Und das probiere ich jetzt auch nochmal aus über Strg + Shift + O reorganisiere ich nochmal die Imports. Und dann klicke ich auf Play und kann auch eine Groesse eingeben, ein Gewicht und noch ein Gewicht und mit -1 beende ich das Programm. Als nächstes werde ich Ihnen auch noch einen Supplier vorstellen, der einen primitiven Double Wert liefert. Dieser Supplier eignet sich für unser Beispielprogramm, da wir ja die groesse und das gewicht der Katze als primitive Double Werte eingeben. Und zwar handelt es sich hier unten um diese Anweisung. Ich gehe also jetzt zunächst mal hin und erstelle mir einen DoubleSupplier Strg + Leertaste und die Variable des DoubleSuppliers nenne ich auch doubleSupplier. Und dem Double Supplier weise ich eine Method-Reference zu und zwar scanner: :nextDouble. Diese Methode wird also immer aufgerufen, wenn ich die Single Abstract Method des doubleSuppliers aufrufe. Und Jetzt kann ich dort, wo ich den scanner bemühe und seine Methode nextDouble aufrufe, dort setze ich dann den doubleSupplier ein und sag ihm besorge mir das Double getAsDouble und das wird dazu führen, dass die Next Double Methode des Scanners aufgerufen wird. Gut, sieht etwas komplizierter aus. Es geht aber hier darum Ihnen das Prinzip zu zeigen. Wie Sie das bei Ihnen in Ihren Quellcode einsetzen, ist wieder eine andere Sache. Das Ganze muss auch Sinn machen und nicht in jedem Fall eingesetzt werden, wann immer es möglich ist. So und jetzt sind wir eigentlich hiermit fertig. Ich kann hier unten den Ausdruck nochmal nutzen und dann speichere ich das Programm ab und kann es auch nochmal ausprobieren, ob es funktioniert. Ein kleiner Test. Also 0,51 6,1 das Gewicht und dann probiere ich das Ganze mit einem anderen Gewicht noch aus und mit -1 wird das Programm ja beendet. In diesem Video habe ich Ihnen spezielle Functional Interfaces vorgestellt, bei denen bewusst auf Generics verzichtet wurde, weil es Situationen gibt, in denen die automatische Umwandlung von numerischen Datentypen zu Wrapper Klassen nicht erwünscht ist.

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!