Gibt es eine Möglichkeit, in Java bitweise ODER-enum zu enumerieren?

Habe ich mit Hilfe einer state-machine, die den code immer sehr ausführlich bei der Prüfung gegen eine große Anzahl an möglichen Zuständen.

enum Mood {
    HAPPY, SAD, CALM, SLEEPY, OPTIMISTIC, PENSIVE, ENERGETIC;
}

Gibt es eine Möglichkeit, dies zu tun:

if (currentMood == (HAPPY | OPTIMISTIC | ENERGETIC) {}

Statt:

if (currentMood == HAPPY || currentMood == OPTIMISTIC || currentMood == ENERGETIC) {}

Oder wäre es besser, stick mit ganzen zahlen und Flaggen in diesem Fall?

Kommentar zu dem Problem
Du meinst if ((currentMood & (FRÖHLICH | OPTIMISTISCH | ENERGETISCHE)) != 0) {}. Oder vielleicht if (((1<<currentMood) & ((1<<HAPPY) | (1<<OPTIMISTISCH) | (1<<ENERGETISCHE))) != 0) {}. Denke, ich bin glücklich, Sie haben, um es richtig zu machen. Kommentarautor: Tom Hawtin - tackline
Ich Rückschlüsse auf die "ganze zahlen und Flaggen", dass man die currentMood kann mehr als eine Stimmung. Kommentarautor: blizpasta
@Tom - ja, Sie sind technisch Recht. Ich war hin-und hergerissen zwischen schreiben im C-Stil bitweise Operationen oder eine set-Theorie type syntax. Kommentarautor:
@blizpasta - Das war nicht meine ursprüngliche Absicht, aber es wäre eine nützliche Verallgemeinerung. Sorry, mein Titel ist ein bisschen zweideutig da. Kommentarautor:

InformationsquelleAutor der Frage | 2011-06-08

Schreibe einen Kommentar