9. Aufzählungen mit enum enum-Deklaration (1) enum

Werbung
9. Aufzählungen mit enum
Konstanten und Aufzählungen
9. Aufzählungen mit enum
enum-Deklaration (2)
9. Aufzählungen mit enum
Für die Definition von systemweiten Konstanten haben wir bisher öffentliche finale
Klassenvariablen verwendet.
public class MusicStyle {
public static final int
public static final int
public static final int
public static final int
}
enum
• Eine enum-Deklaration verhält sich wie eine Klassendeklaration.
• Insbesondere ist mit der Deklaration ein neuer Datentyp verbunden.
Wochentag tag = Wochentag.SONNTAG;
ROCK
POP
COUNTRY
TECHNO
=
=
=
=
0;
1;
2;
3;
•
•
•
•
Ober- und Unterklassen sind nicht erlaubt.
Variablen und Methoden sind möglich.
Für den Aufzählungstyp wird eine class-Datei erstellt.
Die Elemente der Aufzählung werden durch Objekte repräsentiert.
Probleme:
• Kein Zwang zur Verwendung
• Datentyp int statt eines eigenen Datentyps
Peter Becker, Programiersprache Java — FH Bonn-Rhein-Sieg, SS 08
9. Aufzählungen mit enum
230
enum
enum-Deklaration (1)
Peter Becker, Programiersprache Java — FH Bonn-Rhein-Sieg, SS 08
9. Aufzählungen mit enum
enum
enum-Konstanten in switch
Seit Java 5 sind “richtige Aufzählungen” mit dem Schlüsselwort enum möglich.
enum-Konstanten können als case-Marke verwendet werden.
Syntax:
Wochentag tag = Wochentag.SONNTAG;
public enum Aufzählungstyp {
Aufzählung
}
switch (tag) {
case MONTAG :
System.out.println("Ich mag keine Montage!");
break;
case FREITAG:
System.out.println("Gott sei Dank, es ist Freitag!");
break;
}
Beispiel:
public enum Wochentag {
MONTAG, DIENSTAG, ... , SONNTAG
}
Peter Becker, Programiersprache Java — FH Bonn-Rhein-Sieg, SS 08
232
231
Peter Becker, Programiersprache Java — FH Bonn-Rhein-Sieg, SS 08
233
9. Aufzählungen mit enum
enum
enum und Objektorientierung
• enum-Typen überschreiben sinnvoll die folgenden Methoden aus java.lang.Objects:
– toString()
– hashCode()
– equals()
• Sie implementieren die Schnittstellen Serializable und Comparable.
• Die Ordnung der Elemente ergibt sich durch die Reihenfolge bei der Deklaration.
• Aufzählungstypen sind Referenztypen! Daher ist
Wochentag tag = null;
möglich.
• Wo notwendig auf == null prüfen und Exception auslösen.
• import wie bei Klassen
Peter Becker, Programiersprache Java — FH Bonn-Rhein-Sieg, SS 08
9. Aufzählungen mit enum
234
enum
Praktische Methoden im Zusammenhang mit enum
• Die statische Methode valueOf(String) bestimmt zu einem String den zugehörigen enum-Wert:
Wochentag tag = Wochentag.valueOf("SONNTAG"); // liefert Wochentag.SONNTAG
• Die Umkehrung hierzu ist toString():
Wochentag tag = Wochentag.valueOf("SONNTAG");
System.out.println("Heute ist " + tag.toString());
• Die Methode ordinal() liefert die Ordinalzahl zu einer enum-Konstanten.
• Die Klassenmethode values() liefert ein Feld mit allen Werten des Aufzählungstyps:
for (Wochentag t : Wochentag.values())
System.out.println(t + " hat den Wert " + t.ordinal());
Peter Becker, Programiersprache Java — FH Bonn-Rhein-Sieg, SS 08
235
Herunterladen