Link zu www.kneller-gifs.de

Datentyp Enumeration

Seit Java 5 gibt es neben Klassen und Interfaces auch den Aufzählungstyp "Enumeration Type", kurz "enum". Es handelt sich um die Aufzählung von konstanten Werten.

Bsp.:
public enum Ampelphase {ROT, ROTGELB, GRUEN, GELB}; // Typ Ampelphase mit 4 konstanten Objekten von diesem Typ

Hier ein Beispiel für ein Javaprogramm mit einer Enumeration
public class Test {
    public enum Ampelphase {ROT, ROTGELB, GRUEN, GELB};
    public static String wasMachen(Ampelphase ap) {
        String message = "";
        switch (ap) {
        case ROT:
            message = "Stop";
            break;
        case ROTGELB:
            message = "Losfahren";
            break;
        case GRUEN:
            message = "Durchfahren";
            break;
        case GELB:
            message = "Anhalten";
            break;
        }
        return message;
    }
    public static void main(String[] args) {
        for (Ampelphase ap:Ampelphase.values()){
            System.out.println("Ampelphase: "+ap);
        }
        System.out.println("Bei Rot: "+wasMachen(Ampelphase.ROT));
    }
}
Ausgabe:
Ampelphase: ROT
Ampelphase: ROTGELB
Ampelphase: GRUEN
Ampelphase: GELB
Bei Rot: Stop

Komplexere Enum-Typen mit Eigenschaften und Methoden. Achtung, sie benötigen einen Konstruktor!

Die Enum-Klasse für Ampelphase, Phasendauer in Sekunden und was da zu tun ist.
public enum Ampelphasen {
    ROT(60,"stehen bleiben"), ROTGELB(30,"losfahren"), GRUEN(60,"durchfahren"), GELB(30,"anhalten");

    private final int phasendauer;
    private final String wasTun;

    private Ampelphasen(int phasendauer, String wasTun){
        this.phasendauer=phasendauer;
        this.wasTun = wasTun;
    }

    public int getPhasendauer(){
        return phasendauer;
    }
    public String getWasTun(){
        return wasTun;
    }
}

Testklasse zum Starten
public class Test {
    public static void main(String[] args) {
        for (Ampelphasen ap : Ampelphasen.values()) {
            System.out.println("Die Ampel ist " + ap.getPhasendauer()
                    + " Sekunden " + ap + " bitte " + ap.getWasTun());
        }
    }
}
Ausgabe:
Die Ampel ist 60 Sekunden ROT bitte stehen bleiben
Die Ampel ist 30 Sekunden ROTGELB bitte losfahren
Die Ampel ist 60 Sekunden GRUEN bitte durchfahren
Die Ampel ist 30 Sekunden GELB bitte anhalten