Enums sinnvoll Nutzen
21.11 2007, 23:09 Gespeichert in:Java | Computer & IT
Bisher war es üblich, daß man Integer-Konstanten definierte, etwa so:
Und dann in etwa so benutzte:
Mit enums läßt sich das beheben. Wir definieren einen enum:
Da unser Tristate-Enum nur die Werte YES, NO und MAYBE haben kann, ist es unmöglich, hier etwas undefiniertes in tristate vorzufinden, der Switch ist somit Typsicher. Aufgrund der Definition für Tristate gibt eclipse uns auch automatisch als mögliche Werte YES, NO und MAYBE vor.
private final int VALUE_FOR_NO = 0;private final int VALUE_FOR_YES = 1;private final int VALUE_FOR_MAYBE=25; Und dann in etwa so benutzte:
switch(value){case VALUE_FOR_NO: doSomething(); break;case VALUE_FOR_YES: doSomethingElse(); break;case VALUE_FOR_MAYBE: doSomethingCompletelyDifferent(); break;} Daran ist erstmal nichts auszusetzen, der Source ist lesbar und die verwendeten Konstanten sind eindeutig. Allerdings nur, solange der Wert für value dem entspricht, was man erwartet hat. Wir könnten aber hier auch 20 erhalten, mit einem solchen Wert weiß unser Switch so wenig anzufangen wie wir und das Programm verhält sich unerwartet.Mit enums läßt sich das beheben. Wir definieren einen enum:
private enum Tristate{YES, NO, MAYBE};Und dann... switch(tristate){ case YES: doSomething(); break; case NO: doSomethingElse(); break; case MAYBE: doSomethingCompletelyDifferent(); break;}Da unser Tristate-Enum nur die Werte YES, NO und MAYBE haben kann, ist es unmöglich, hier etwas undefiniertes in tristate vorzufinden, der Switch ist somit Typsicher. Aufgrund der Definition für Tristate gibt eclipse uns auch automatisch als mögliche Werte YES, NO und MAYBE vor.