Java 7 Grundkurs

Annotations

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
In diesem Film erfahren Sie mehr über Annotations, diese bieten Ihnen eine Möglichkeit, Metainformationen in Programme einzufügen. Einige sind schon in der Java-Standard-Bibliothek vordefiniert, die Enterprise-Version enthält sogar unzählige.
06:10

Transkript

In diesem Video schauen wir uns an, was Annotations sind, und was Sie damit machen können. Ich habe dazu als Beispiel hier eine Klasse "Auto". Diese Klasse hat diverse Methoden, auf die es jetzt mal nicht näher ankommt. Und sie hat insbesondere eine Methode: "Get Status". Diese Methode liefert einen kurzen Text zurück über den aktuellen Status des Fahrzeuges. Also so etwas wie: "Das Auto Klaus fährt gerade 20km/h", z. B. als zweite Klasse haben wir hier die Unterklasse "Cabrio". Dadurch, dass sie die Unterklasse von "Auto" ist, erbt sie natürlich alle Methoden mit allen Implementierungen. Zusätzlich hat sie noch zwei eigene Methoden mitgebracht, nämlich: "öffne Dach" und "schließe Dach". In der Klasse "Cabrio" wird nun die Methode "Get Status", die ja von "Auto" geerbt wurde, überschrieben, d.h. mit einem neuen Inhalt versehen. Das geerbte Verhalten wird hier also angepasst. Und zwar enthält die Statusmeldung zusätzlich noch eine Meldung über das Dach. Die Meldung könnte dann also z. B. heißen: "Das Auto Klaus fährt gerade 30km/h, und das Dach ist geschlossen". Schauen wir uns die wesentlichen Stellen dazu mal im Quelltext an. Beginnen wir mit der Klasse "Auto". Das ist sie, wir haben hier zwei Attribute: "Geschwindigkeit" und "Name". Dann haben wir diverse Konstruktoren und Methoden. Und hier haben wir unsere Methode "Get Status". Sie steckt einen String zusammen, nämlich "Name des Autos", dann: "fährt gerade", "Geschwindigkeit des Autos" und "km/h" hinten dran, und gibt den String an den Aufrufer zurück. In der Klasse "Cabrio" sieht die Methode dann entsprechend so aus: Es wird hier "Get Status" von der Oberklasse aufgerufen, also von "Auto", das was wir gerade gesehen haben. Und an das, was diese Methode zurückgibt, wird dann noch dieser Text hinten dran gehängt. Nämlich: "und das Dach ist gerade". Und dann je nach dem, ob die Variable "Dach offen", die hier im Auto den Zustand des Dachs beinhaltet, true oder false ist, hängen wir noch "offen" oder "geschlossen" hinten dran. Jetzt schauen wir uns noch an, wie die Methoden aufgerufen werden. Ich habe dazu eine Test-Klasse, die heißt "Auto Demo". Und hier in der main Methode, da wird an dieser Stelle das Cabrio Objekt erzeugt. Mein Cabrio heißt Carl Carl das Cabrio. Dann werden ein paar Sachen mit dem Cabrio gemacht, und hier wird ein Array mit Platz für drei Autos angelegt. Ein Cabrio ist ja ein Auto und kann deshalb hier an die letzte Stelle im Array reingepackt werden. Jetzt werden noch ein paar Autos erzeugt, die da vorkommen. Und ganz zum Schluss wird dann durch dieses Array durch iteriert, und von jedem Auto darin wird "Get Status" aufgerufen. Wenn ich jetzt also das Programm ausführe, dann müsste die allerletzte Zeile die Meldung von unserem Cabrio sein. Ich mache das mal. "Ausführen". Und dann sehen wir hier: "Carl fährt gerade 1km/h und das Dach ist gerade geschlossen." Was hat das ganze nun aber mit Annotations zu tun? Bis jetzt noch nichts. Und deshalb gehen wir jetzt noch mal in die Klasse "Cabrio" hinein, zu unserer Methode "Get Status". Hier überschreiben wir ja die geerbte Methode der Oberklasse. Und das machen wir, indem wir eine Methode bauen, die genau so heißt, wie die gleiche Parameterliste bekommt, und den selben Rückgabe-Typ hat. Nur, wenn wir uns daran halten, dann überschreiben wir tatsächlich die Methode. Ansonsten würden wir einfach eine zusätzliche weitere Methode hinzufügen. Unser Cabrio hätte dann zwei Methoden: einmal die geerbte und die von uns hinzugefügte. So etwas kann schneller passieren, als Sie denken. Wir könnten uns z. B. hier vertippen. Java unterscheidet ja Groß-Kleinschreibung, d. h., auch wenn es also auf den ersten Blick so aussieht, wir überschreiben hier nicht die Methode "Get Status" aus der Oberklasse, sondern wir fügen, eine neue, separate Methode, "Get status", mit kleinem "s", hinzu. Dieser Methodenname als solcher ist ein ganz normaler zulässiger Methodenname. D. h. wir bekommen auch keinen Compiler-Fehler. Aber wenn wir diese Anwendung jetzt ausführen, dann sehen wir, die letzte Meldung heißt nur noch: "Carl fährt gerade 1km/h." Die Meldung: "Und das Dach ist gerade geschlossen." fehlt. Warum? In der Testklasse wird ja "Get Status" mit großem S aufgerufen, von allen Autos, die wir so haben. Und diese Methode erbt unser Cabrio unverändert von der Oberklasse. Das was wir hier haben, ist ja eine andere Methode. Und hier kommen jetzt die Annotations ins Spiel. Annotations bieten nämlich eine Möglichkeit, Meta-Informationen ins Programm einzufügen. Also zusätzliche Informationen für den Compiler, die also der Compiler auswerten kann. Und ein paar solche Annotations sind bereits in der Java-Standardbibliothek vordefiniert. Annotations beginnen grundsätzlich mit einem @-Zeichen. Also mit diesem hier. Und die Annotation, die ich hier verwende, heißt "@overwrite". Wie gesagt, Annotations dienen dazu, dasss ich dem Compiler zusätzliche Informationen vermitteln kann und mit dieser Annotation an einer Methode sage ich dem Compiler: Compiler, hör mal zu, ich glaube ich überschreibe hier eine Methode, die ich aus der Oberklasse geerbt habe. Und das bietet dann dem Compiler die Möglichkeit, darauf hinzuweisen, wenn das nicht stimmt, so wie in diesem Fall. In diesem Fall bekomme ich nämlich jetzt einen Compiler-Fehler, der heißt: "Diese Methode überschreibt nichts, was in einem Obertyp deklariert wurde." Durch diesen Compiler-Fehler aufmerksam geworden, kann ich jetzt nochmal genauer hinschauen. Und dann stelle ich fest: Oh, da habe ich ja ein kleines s statt einem großen S. Jetzt verschwindet auch der Compiler-Fehler und alles funktioniert wieder wie es soll. Noch einmal Ausführen. Und dann sehen wir das: "Carl fährt 1km/h und das Dach ist geschlossen." Wenn Sie alles richtig machen würden, dann würde der Code auch ohne diese Annotation korrekt funktionieren. Diese Annotation sichert einfach ab, dass Ihre Annahme, nämlich, dass Sie hier gerade eine Methode überschreiben, auch immer richtig ist, und dass der Compiler das auch bei jedem Compiler-Lauf überprüfen kann. Wirklich durchgängig kann das Ganze natürlich nur funktionieren, wenn Sie diese @overwrite auch immer und überall da dran schreiben, wo Sie eine Methode überschreiben. Und die Lesbarkeit des Programms verbessert sich dadurch ebenfalls. Jeder, der hier drauf guckt, kann sofort sehen: Ah, die Methode gibt es ja auch in der Oberklasse schon. Damit haben Sie nun gesehen, wie das Konzept der Annotation funktioniert und Sie haben exemplarisch eine Annotation kennengelernt, nämlich "@overwrite". Annotations werden Ihnen immer wieder über den Weg laufen. In der Java-Standardbibliothek gibt es zwar nur einige wenige davon, aber in Java, EE, in der Enterprise Edition z. B. wimmelt es geradezu von Annotations. Und prinzipiell wäre es auch möglich, Annotations selbst zu schreiben. Aber wir sind jetzt erstmal am Ende dieses Films angekommen.

Java 7 Grundkurs

Machen Sie sich mit den Grundlagen der Java-Programmierung vertraut und lernen Sie die Syntax der Sprache sowie das Konzept der objektorientierten Softwareentwicklung kennen.

8 Std. 32 min (66 Videos)
Derzeit sind keine Feedbacks vorhanden...

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!