Quiz

Quiz: Wochentage

public enum Wochentage {
    MONTAG, DIENSTAG, MITTWOCH, DONNERSTAG,
    FREITAG, SAMSTAG, SONNTAG(false);

    private final boolean werktag;

    public Wochentage() {
        werktag = true;
    }

    public Wochentage(boolean werktag) {
        this.werktag = werktag;
    }
}
public enum Wochentage {
    MONTAG, DIENSTAG, MITTWOCH, DONNERSTAG,
    FREITAG, SAMSTAG, SONNTAG(false);

    private final boolean werktag;

    public Wochentage() { // FEHLER!!
        werktag = true;
    }

    public Wochentage(boolean werktag) { // FEHLER!!
        this.werktag = werktag;
    }
}

Das Beispiel kompiliert erst gar nicht, weil Enumerationen keine öffentlichen Konstruktoren haben dürfen. Da es sich bei den Konstanten um Singletons handelt, darf es nicht möglich sein von außen weitere Objekte zu erzeugen.

Quiz: Vergleiche

public enum Geschlecht {
    MAENNLICH, WEIBLICH;
}
Geschlecht g1 = Geschlecht.valueOf("MAENNLICH");
Geschlecht g2 = Geschlecht.values()[0];
Geschlecht g3 = Geschlecht.MAENNLICH;

System.out.println(g1 == g2);
System.out.println(g1 == g3);
System.out.println(g1.equals(g3));
true
true
true

Für Enumerationen garantiert die VM, dass immer nur ein einziges Objekt pro Enum-Konstante (hier also MAENNLICH und WEIBLICH) vorhanden ist. Daher darf man Enum-Objekte auch, im Gegensatz zu allen anderen Objekten, mit == vergleichen. Hierbei ist es egal, wie man an das jeweilige Enum-Objekt gelangt ist.


Copyright © 2025 Thomas Smits