Enums sinnvoll Nutzen

Bisher war es üblich, daß man Integer-Konstanten definierte, etwa so:
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.