Zertifizierung für Java 2 Plattform 1.4: Keywords

abstract

Bearbeiten

Dieses Schlüsselwort kann sowohl auf Methoden als auch auf Klassen angewendet werden und symbolisiert jeweils, dass die Methode/Klasse noch nicht (fertig) implementiert ist.

Von abstrakten Klassen können keine Objekte erzeugt werden. Dennoch ist es möglich für abstrakte Klassen einen Konstruktor zu definieren. Dieser kann nicht von außerhalb benutzt werden, sondern ausschließlich von Subklassen.

Eine abstrakte Methode besteht nur aus der Methodensignatur, also dem Zugriffsmodifizierer, dem Rückgabetyp, der Argumentenliste und den Exceptions, die die Methode werfen kann. Sie enthält aber im Gegensatz zu einer normalen Methode keinen Methodenkörper.

In Interfaces sind alle Methoden implizit als public abstract definiert. Klassen, die abstrakte Methoden beinhalten, diese aber nicht implementieren, müssen auch als abstract definiert werden.

Testet Bedingungen der Form 'assert string != null : "Fehlermeldung";' Asserts müssen durch VM-Parameter eingeschaltet werden und lösen einen harten Abbruch aus.

Das Schlüsselwort break kann

  • in Schleifen angewendet werden, um die Abarbeitung der Schleife vorzeitig abzubrechen.
  • in switch/case Anweisungen ermöglichen nur bestimmte cases auszuführen. Würde break nicht aufgerufen, wird der zu überprüfende wert mit den nächsten cases trotzdem verglichen:
int value = 1;
switch (value) {
case 1:
	anweisung1();
	break; // <- richtig
case 2:
	anweisung2(); // (in der regel) falsch. Nachdem anweisung2() ausgeführt wurde, wird die 
                      // variable value trotzdem noch mit case3 verglichen, da kein break
                      // aufgerufen wird
case 3:
	anweisung3();
default:
	break;
}

Definiert einen Fall innerhalb einer switch/case Anweisung

"Fängt" einen Fehler innerhalb einer try/catch-Anweisung

Reserviertes Schlüsselwort ohne Funktionalität.

continue

Bearbeiten

Ermöglicht es, den aktuellen Schleifendurchlauf zu beenden und die Schleifenbedingung erneut auszuwerten.

Reserviertes Schlüsselwort ohne Funktionalität.

implements

Bearbeiten

Ein Beispiel (dabei ist alles was in den eckigen Klammern steht optional):

public class MeineKlasse extends SuperKlasse implements MeinInterface1[, MeinInterface2, ..., MeinInterfaceN] {...}

Klassen die dieses Schlüsselwort in der Signatur enthalten, implementieren mindestends ein Interface. Dies dient der Polymorphie, denn nun ist es möglich, Objekte vom Typ MeineKlasse auch als Objekte vom Typ MeinInterface1, MeinInterface2 etc. aufzufassen.

Im Regelfall werden alle Methoden aller angegebenen Interface von der Klasse auch implementiert. Sollte dies nicht der Fall sein, so muss die Klasse als abstract definiert werden. Außerdem sind nun auch alle Konstanten aus allen Interfaces für die implementierende Klasse definiert. Prominentes Beispiel hierfür ist das Interface javax.swing.SwingConstants. Allerdings ist von solchen Konstantensammlungen abzuraten, da Interfaces eigentlich neue Typen definieren sollen.

instanceof

Bearbeiten

interface

Bearbeiten

Kann statisch deklariert werden.

private ist ein Zugriffsmodifizierer für Klassen, Felder und Methoden. Er stellt die niedrigste Sichtbarkeitsstufe dar. Mit private deklarierte Klassen, Felder und Methoden können nur innerhalb der definierenden Klasse gesehen werden. Dies impliziert für Klassen, dass diese nur als private deklariert werden können, wenn es innere Klassen oder statische Klassen sind.

protected

Bearbeiten

strictfp

Bearbeiten

Ausdrücke, die als strictfp gekennzeichnet sind, werden nicht nach der erweiterten Gleitpunktdarstellung IEEE 754-1985 behandelt. Unabhängig von der Genauigkeit, die die JVM oder die Hardware zur Verfügung stellt (für double-Werte anstatt 64 Bit oft 80 Bit), wird also bei diesen Ausdrücken streng mit 64 Bit bzw. 32 Bit gerechnet. Dies soll die Portabilität zwischen verschiedenen Plattformen gewährleisten. Ein Ausdruck ist nur dann nicht FP-strict, falls der Ausdruck nicht compiletime-konstant ist und er nicht in einer als strictfp deklarierten Klasse, Methode oder Interface enthalten ist. Siehe dazu http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html Paragraph 15.4

Bedingte Verzweigung zu mehreren Zielen. Entspricht in etwa einer Liste von if oder if/else if-Anweisungen.

synchronized

Bearbeiten

transient

Bearbeiten

Das Schlüsselwort transient weist den Compiler an, dieses Feld (aus dem Englischen 'field' für Variable) beim Serialisieren nicht zu berücksichtigen. Wird also ein Objekt mit einem derartigen Feld serialisiert, so erhält das entsprechende Feld beim deserialisieren den Standardwert.

try ermöglicht einem Codeabschnitt, gesichert eine Exception zu werfen. Die Fehlerbehandlung findet innerhalb des catch-Blockes statt

volatile

Bearbeiten

Das Schlüsselwort volatile wird für die Programmierung mit mehreren Threads benutzt. Da Threads ihre eigenen Kopien von Variablen besitzen dürfen, kann es passieren, dass ein Thread mit bereits veralteten Variablenwerten arbeitet. Das Schlüsselwort volatile verhindert dies, indem es die JVM anweist, die Variable bei jedem Lese- und Schreibzugriff mit dem Hauptspeicher zu synchronisieren. Dies gilt auch für long- und double-Variablen. Siehe dazu http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#36930 Paragraph 8.3.1.4 sowie http://java.sun.com/docs/books/jls/second_edition/html/memory.doc.html#26250 Paragraph 17.7