Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Eigene Klassen schreiben
6 Exceptions
7 Generics<T>
8 Äußere.innere Klassen
9 Besondere Klassen der Java SE
10 Architektur, Design und angewandte Objektorientierung
11 Die Klassenbibliothek
12 Bits und Bytes und Mathematisches
13 Datenstrukturen und Algorithmen
14 Threads und nebenläufige Programmierung
15 Raum und Zeit
16 Dateien, Verzeichnisse und Dateizugriffe
17 Datenströme
18 Die eXtensible Markup Language (XML)
19 Grafische Oberflächen mit Swing
20 Grafikprogrammierung
21 Netzwerkprogrammierung
22 Verteilte Programmierung mit RMI
23 JavaServer Pages und Servlets
24 Datenbankmanagement mit JDBC
25 Reflection und Annotationen
26 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Stichwort
Ihre Meinung?

Spacer
 <<   zurück
Java ist auch eine Insel von Christian Ullenboom
Das umfassende Handbuch
Buch: Java ist auch eine Insel

Java ist auch eine Insel
geb., mit DVD
1482 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1506-0
Pfeil 3 Klassen und Objekte
  Pfeil 3.1 Objektorientierte Programmierung (OOP)
    Pfeil 3.1.1 Warum überhaupt OOP?
    Pfeil 3.1.2 Denk ich an Java, denk ich an Wiederverwendbarkeit
  Pfeil 3.2 Eigenschaften einer Klasse
    Pfeil 3.2.1 Die Klasse Point
  Pfeil 3.3 Die UML (Unified Modeling Language) *
    Pfeil 3.3.1 Hintergrund und Geschichte zur UML
    Pfeil 3.3.2 Wichtige Diagrammtypen der UML
    Pfeil 3.3.3 UML-Werkzeuge
  Pfeil 3.4 Neue Objekte erzeugen
    Pfeil 3.4.1 Ein Exemplar einer Klasse mit dem new-Operator anlegen
    Pfeil 3.4.2 Garbage-Collector (GC) – Es ist dann mal weg
    Pfeil 3.4.3 Deklarieren von Referenzvariablen
    Pfeil 3.4.4 Zugriff auf Variablen und Methoden mit dem ».«
    Pfeil 3.4.5 Konstruktoren nutzen
  Pfeil 3.5 Mit Referenzen arbeiten, Identität und Gleichheit
    Pfeil 3.5.1 Die null-Referenz
    Pfeil 3.5.2 null-Referenzen testen
    Pfeil 3.5.3 Zuweisungen bei Referenzen
    Pfeil 3.5.4 Methoden mit nicht-primitiven Parametern
    Pfeil 3.5.5 Identität von Objekten
    Pfeil 3.5.6 Gleichheit und die Methode »equals()«
  Pfeil 3.6 Kompilationseinheiten, Imports und Pakete schnüren
    Pfeil 3.6.1 Volle Qualifizierung und import-Deklaration
    Pfeil 3.6.2 Mit import p1.p2.* alle Typen eines Pakets erreichen
    Pfeil 3.6.3 Hierarchische Strukturen über Pakete
    Pfeil 3.6.4 Die package-Deklaration
    Pfeil 3.6.5 Unbenanntes Paket (default package)
    Pfeil 3.6.6 Klassen mit gleichen Namen in unterschiedlichen Paketen *
    Pfeil 3.6.7 Compilationseinheit (Compilation Unit)
    Pfeil 3.6.8 Statischer Import
    Pfeil 3.6.9 Eine Verzeichnisstruktur für eigene Projekte *
  Pfeil 3.7 Arrays
    Pfeil 3.7.1 Deklaration von Arrays
    Pfeil 3.7.2 Arrays mit Inhalt
    Pfeil 3.7.3 Die Länge eines Arrays über das Attribut length auslesen
    Pfeil 3.7.4 Zugriff auf die Elemente über den Index
    Pfeil 3.7.5 Array-Objekte mit new erzeugen
    Pfeil 3.7.6 Fehler bei Arrays
    Pfeil 3.7.7 Die erweiterte for-Schleife
    Pfeil 3.7.8 Arrays mit nicht-primitiven Elementen
    Pfeil 3.7.9 Mehrdimensionale Arrays *
    Pfeil 3.7.10 Vorinitialisierte Arrays *
    Pfeil 3.7.11 Mehrere Rückgabewerte *
    Pfeil 3.7.12 Methode mit variabler Argumentanzahl (Vararg)
    Pfeil 3.7.13 Klonen kann sich lohnen – Arrays vermehren *
    Pfeil 3.7.14 Feldinhalte kopieren *
    Pfeil 3.7.15 Die Klasse Arrays zum Vergleichen, Füllen und Suchen nutzen
  Pfeil 3.8 Der Einstiegspunkt für das Laufzeitsystem: »main()«
    Pfeil 3.8.1 Kommandozeilenargumente verarbeiten
    Pfeil 3.8.2 Der Rückgabewert von »main()« und »System.exit()«
  Pfeil 3.9 Annotationen
    Pfeil 3.9.1 Annotationstypen @Override, @Deprecated, @SuppressWarnings
  Pfeil 3.10 Zum Weiterlesen


Rheinwerk Computing - Zum Seitenanfang

3.9 Annotationen  Zur nächsten ÜberschriftZur vorigen Überschrift

In diesem Kapitel haben wie schon unterschiedliche Modifizierer kennengelernt. Darunter waren zum Beispiel static oder public. Das besondere an diesen Modifizierern ist, dass sie die Programmsteuerung nicht beeinflussen, aber dennoch wichtige Zusatzinformationen darstellen, also Semantik einbringen. Diese Informationen nennen sich Metadaten. Die Modifizierer static, public sind Metadaten für den Compiler, doch mit etwas Fantasie lassen sich auch Metadaten vorstellen, die nicht vom Compiler, sondern von einer Java-Bibliothek ausgewertet werden. So wie public zum Beispiel dem Compiler sagt, dass ein Element für jeden sichtbar ist, kann auch auf der anderen Seite ein besonderes Metadatum an einem Element hängen, um auszudrücken, dass es nur bestimmte Wertebereiche annehmen kann.

Seit Java 5 gibt es eine in die Programmiersprache eingebaute Fähigkeit für Metadaten: Annotationen. Die Annotationen lassen sich wie benutzerdefinierte Modifizierer erklären. Wir können zwar keine neue Sichtbarkeit erfinden, aber dennoch dem Compiler, bestimmten Werkzeugen oder der Laufzeitumgebung durch die Annotationen Zusatzinformationen geben. Dazu ein paar Beispiele für Annotationen und Anwendungsfälle.


Tabelle 3.3  Beispiele für Annotationen und Anwendungsfälle

Annotation Erklärung

@WebService class Calculator @WebMethod int add( int x, int y ) …

Definiert einen Web-Service mit einer Web-Service Methode

@Override public String toString() …

Überschreibt Methode der Oberklasse

@XmlRoot class Person { …

Ermöglicht Abbildung auf eine XML-Datei


Die Tabelle soll lediglich einen Überblick geben, genaue Anwendungen und Beispiele folgen.

Annotationen werden wie zusätzliche Modifizierer gebraucht, doch unterscheiden sie sich durch ein vorangestelltes @-Zeichen (das @-Zeichen, AT, ist auch eine gute Abkürzung für Annotation Type). Daher ist auch die Reihenfolge egal, sodass es zum Beispiel

  • @Override public String toString() oder
  • public @Override String toString()

lauten kann. Es ist aber üblich, die Annotationen an den Anfang zu setzen.


Rheinwerk Computing - Zum Seitenanfang

3.9.1 Annotationstypen @Override, @Deprecated, @SuppressWarnings  topZur vorigen Überschrift

Im Paket java.lang gibt es drei Annotationstypen, wobei uns @Override ab Kapitel 5, »Eigene Klassen schreiben«, noch häufiger über den Weg laufen wird.


Tabelle 3.4  Annotationen aus dem Paket »java.lang«

Annotationstyp Wirkung

@Override

Die annotierte Methode überschreibt eine Methode aus der Oberklasse oder implementiert eine Methode einer Schnittstelle.

@Deprecated

Das markierte Element ist veraltet und sollte nicht mehr verwendet werden.

@SuppressWarnings

Unterdrückt bestimmte Compiler-Warnungen.


Die drei Annotationen haben vom Compiler beziehungsweise Laufzeitsystem eine besondere Semantik. Einige weitere Annotationen, die nur für eigene Annotationstypen gedacht sind:

Die Begriffe »Annotation« und »Annotationstyp«

Die Annotationstypen sind die Deklarationen, wie etwa ein Klassentyp. Werden sie an ein Element gehängt, ist es eine konkrete Annotation. Während also Override selbst der Annotationstyp ist, ist @Override vor toString() die konkrete Annotation.

@Deprecated

Die Annotation @Deprecated übernimmt die gleiche Aufgabe wie das JavaDoc-Tag @deprecated. Ein Unterschied bleibt: Das JavaDoc-Tag kann nur von JavaDoc (beziehungsweise einem anderen Doclet) ausgewertet werden, während Annotationen auch andere Tools selbst zur Laufzeit auswerten können:

@Deprecated
public void fubar() { ... }

Falls ein Programmstück die @Deprecated-Methode fubar() [Im US-Militär-Slang steht das für: »Fucked up beyond any recognition« – »vollkommen ruiniert«. ] nutzt, gibt der Compiler eine einfache Meldung aus. Die Übersetzung mit dem Schalter -Xlint:deprecation liefert die genauen Warnungen; im Moment ist das mit -deprecation gleich.

Annotationen mit zusätzlichen Informationen

Die Annotationen @Override und @Deprecated gehören zur Klasse der Marker-Annotationen, weil keine zusätzlichen Angaben nötig (und erlaubt) sind. Zusätzlich gibt es die »Single-Value Annotation«, die genau eine zusätzliche Information bekommt, und eine volle Annotation mit beliebigen Schlüssel/Werte-Paaren.


Tabelle 3.5  Annotationen mit und ohne zusätzliche Informationen

@Annotationstyp

(Marker-)Annotation

@Annotationstyp( Wert )

Annotation mit genau einem Wert

@Annotationstyp( Schlüssel1=Wert1, Schlüssel2=Wert2, ... )

Annotation mit Schlüssel/Werte-Paaren


@SuppressWarnings

Die Annotation @SuppressWarnings steuert Compiler-Warnungen. Unterschiedliche Werte bestimmen genauer, welche Hinweise unterdrückt werden. Beliebt ist die Annotation bei der Umstellung von älterem Quellcode mit nicht-typisierten Datenstrukturen, um die Anzahl der Warnungen zu minimieren. Da sich mit Java 5.0 das Klassenformat änderte, gibt der Compiler beim Übersetzen älterer Klassen schnell eine »unchecked«-Meldung aus.


Beispiel Der Compiler soll für die ungenerisch verwendete Liste keine Meldung geben:

Listing 3.19  com/tutego/insel/annotation/SuppressWarningsDemo.java, main()

@SuppressWarnings( "unchecked" )
public static void main( String[] args )
{
  ArrayList list = new ArrayList();
  list.add( "SuppressWarnings" );
}

Die Annotation der lokalen Variable funktioniert nicht!


@SuppressWarnings("unchecked") ist eine Abkürzung von @SuppressWarnings(value= {"unchecked"});. Die zweite Schreibweise macht deutlich, dass ein Feld von Strings übergeben werden kann.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
 <<   zurück
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Java SE Bibliotheken






 Java SE Bibliotheken


Zum Katalog: Professionell entwickeln mit Java EE 7






 Professionell
 entwickeln mit
 Java EE 7


Zum Katalog: Einstieg in Eclipse






 Einstieg in
 Eclipse


Zum Katalog: Einstieg in Java






 Einstieg in
 Java


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2011
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern