Aufzählungstypen
- Typ der Zugriffsklasse (Feld visibility):
- kann 4 Werte annehmen (public,
protected, private,
default)
- als String
- einfach
- beliebige Werte möglich
- kein Check
- als int
- Werte 0 .. 3 durch Konstruktor erzwungen
- Bedeutung der Werte nicht festgelegt, beliebig
- muss woanders festgelegt werden
- in Pascal als eigener Datentyp (Aufzählungstyp)
- TYPE Visibility = (public, protected,
private, default)
- geplant für Java 1.5
- Anforderungen an Feld visibility:
- keine Mischung mit anderen Typen (int,
String o.ä.)
- feste Menge von Werten
- Ausgabe-Möglichkeit
- Lösung in Java:
- Klasse Visibility
(= eigener Datentyp)
- Werte als vorgegebene Objekte, static
und final:
- public static final Visibility PRIVATE
= new Visibility("private");
- Konstruktor ist private →
keine neuen Werte erzeugbar
- toString-Methode zur Ausgabe
- internes Feld name zur Bezeichnung
- wird im Konstruktor gesetzt
- kleines Extra
- komplette Liste der Werte mit getVisibilities()
- praktisch z.B. für Auswahlboxen
- Enumeration-Pattern:
- Pattern-Typ Idiom (Java)
- Problem
- Feld soll nur Werte aus fester Liste haben
- Werte sollen auch ausgegeben werden können
- Lösung
- eigene Klasse für die Werte
- privater Konstruktor mit Ausgabe-String als Parameter
- Werte als Objekte vom Typ static
final
- Konsequenzen
- typsichere Verwendung der vorgegebenen Werte (+)
- Ausgabe als Strings in natürlicher Weise (+)
- leichter Overhead gegenüber einfachen Integern
(-)
- schwierigere Serialisierung (s.u.) (-)
- Erweiterungen
- Möglichkeiten zum automatischen Durchlaufen der
Werte [7]
- Abspeichern mit einfacher Serialisierung