Enum mit switch

kurztipp

Aktives Mitglied
Hallo,

kann man (etwas kompliziert formuliert) -- wenn ja wie -- Enums mit einer switch Bedingung verwenden, die nicht direkt ein Enum Abfragt?
Mit "direkt ein Enum abfragt" meine ich den "klassischen" Ansatz:
Java:
    enum Options {
        ADD, EDIT, DELETE, RENAME
    };

    Options opt = Options.DELETE;
    switch (opt) {
        case ADD:
            break;
        case DELETE:
            break;
        }

Aber wie funktioniert das, wenn die Information von einer Funktion und nicht einer Varible des Enums übergeben wird?

Java:
    private enum Options {
        ADD, EDIT, DELETE, RENAME
    };

    public void onCreateContextMenu(ContextMenu menu) {
            menu.add(0, Options.EDIT.ordinal(), 1, "Menge ändern");
            menu.add(0, Options.DELETE.ordinal(), 1, "Löschen");
    }

    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case Options.EDIT.ordinal():
            // do something
            break;
            }
        case Options.DELETE.ordinal():
            // do something
            break;
            }
        }

Das ist zwar Android spezifischer Code, tut aber dem allgemeinen Charakter der Frage keinen Abbruch, denke ich.
Code:
item.getItemID()
kann nur Werte enthalten, die von einem Enum kommen, aber leider funktioniert der Code nicht -- zumindest gibt mir Eclipse eine Fehlermeldung:
Code:
case expressions must be constant expressions
.
Das liegt wohl an der Verwendung von .ordinal()


Java:
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case EDIT:
            // do something
            break;
            }
        case DELETE:
            // do something
            break;
            }
        }

Geht auch nicht, da das switch wohl als Parameter eine Instanz des Enums braucht, damit die Werte zugänglich sind.

Ich denke, es liegt im Prinzip daran, dass das switch über ein int und nicht über ein Enum läuft, richtig?
Wie kann ich das Enum aus dem int wiederherstellen, um es über switch laufen zu lassen? Ich habe leider keine Methode hierfür gefunden.
Oder wählt man bei sowas einen anderen Ansatz?

Gruß
 
Zuletzt bearbeitet:

JCODA

Top Contributor
So ?

Java:
public boolean onContextItemSelected(MenuItem item) {
        Options opt = Options.values()[item.getItemId()];
        switch (opt) {
        case Options.EDIT:
            // do something
            break;
            }
        case Options.DELETE:
            // do something
            break;
            }
        }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Verständnis enum - switch Allgemeine Java-Themen 2
R Java enum switch Allgemeine Java-Themen 11
J Best Practice Generics mit Enum Allgemeine Java-Themen 3
Drachenbauer Wie kann ich einer existierenden Enum von außerhalb veränderte Werte zuweisen? Allgemeine Java-Themen 5
A Ist ein enum hier richtig? Enum toString() Methode. Allgemeine Java-Themen 1
E Eigenen "Aufzählungstyp" erstellen - mit enum ? Allgemeine Java-Themen 18
I Enum gegen Enum tauschen Allgemeine Java-Themen 1
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
Neumi5694 Interface Generics für Enum-Filterung verwenden Allgemeine Java-Themen 5
perlenfischer1984 TestNG - Enum testen Allgemeine Java-Themen 1
I Setzen und Lesen eines Objektes (Enum?) Allgemeine Java-Themen 10
Q Enum Allgemeine Java-Themen 3
F Enum und Klasseninhalt Allgemeine Java-Themen 1
D Enum Kategorien Allgemeine Java-Themen 10
C Datentypen Enum-Werte Bestanteil von anderem Enum Allgemeine Java-Themen 8
M Enum austauschbar machen Allgemeine Java-Themen 3
Rudolf State Pattern als Enum? Allgemeine Java-Themen 10
E Klassen Enum überladen od. austauschbar machen? Allgemeine Java-Themen 2
EnHancEd[] kurze enum-Frage Allgemeine Java-Themen 4
X Java findet eine Enum Klasse nicht Allgemeine Java-Themen 2
A Dynamisches Enum? Allgemeine Java-Themen 2
E Wert von enum zur Laufzeit festlegen. Allgemeine Java-Themen 5
D Methode für generische enummap/enum Allgemeine Java-Themen 10
D Array oder Vector in Enum Deklarieren Allgemeine Java-Themen 3
L HashMap mit Enum Keys Allgemeine Java-Themen 3
G Enum mit Array Allgemeine Java-Themen 3
D Wie prüfen, ob ein String Teil eines Enum Types ist? Allgemeine Java-Themen 12
H2SO3- Enum mit Java 1.4 Allgemeine Java-Themen 6
S Erstes Enum bekommen? Allgemeine Java-Themen 2
S Enum-Class valueOf Function? Allgemeine Java-Themen 1
R Java enum Allgemeine Java-Themen 5
J Enum Problem: compiliert nicht mit Sun's compiler. Allgemeine Java-Themen 2
V Wie Enum an Funktion "übergeben" ? Allgemeine Java-Themen 4
N Java und Enum Allgemeine Java-Themen 3
GilbertGrape persistentes Enum oder Konstanten? Allgemeine Java-Themen 3
G enum Integer zuweisen Allgemeine Java-Themen 14
G class, interface, or enum exp? Allgemeine Java-Themen 2
P enum Allgemeine Java-Themen 7
S Java Enum und ordinal() Allgemeine Java-Themen 4
S Enum Fehler Allgemeine Java-Themen 17
C Enum-namespace ? Allgemeine Java-Themen 5
G Effizienz von enum vs. Konstanten Allgemeine Java-Themen 4
C enum und Vererbung Allgemeine Java-Themen 3
K Warunung und Fehler bei Enum.valueOf Allgemeine Java-Themen 2
C enum Strings mit punkt ? Allgemeine Java-Themen 3
J Enum in Java Allgemeine Java-Themen 19
W Switch Anweisung Allgemeine Java-Themen 4
MiMa Switch Anweisung Allgemeine Java-Themen 10
C Switch mit String Allgemeine Java-Themen 19
F Switch Prefix Suffix Allgemeine Java-Themen 9
K Eclipse Alternativkonstrukte (Verzweigungen: if, switch,else..) Allgemeine Java-Themen 4
I switch aus der realen Welt Allgemeine Java-Themen 17
Q Variable aus Schleife/Switch benutzen Allgemeine Java-Themen 7
N switch Statement Allgemeine Java-Themen 4
Escorter Switch in der Schleife! Allgemeine Java-Themen 4
F Frage zu switch und enums Allgemeine Java-Themen 5
P switch/actionPerformed Allgemeine Java-Themen 7
G switch case VS. if.else if Allgemeine Java-Themen 2
M Switch von case zu case weiterleiten Allgemeine Java-Themen 6
E if oder switch Allgemeine Java-Themen 27

Ähnliche Java Themen

Neue Themen


Oben